English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Los lenguajes de programación orientados a objetos generalmente implementan el encapsulamiento de datos y la herencia y pueden llamar a métodos basados en datos.
Rust no es un lenguaje de programación orientado a objetos, pero estas funciones se pueden implementar.
El encapsulamiento es la estrategia de presentación externa, en Rust se puede implementar mediante el mecanismo de módulos para la encapsulación más externa, y cada archivo de Rust se puede considerar como un módulo, los elementos del módulo se pueden mostrar externamente mediante la palabra clave pub. Esto se describe en detalle en el capítulo "Organización y Gestión".
"Clase" es un concepto comúnmente utilizado en los lenguajes de programación orientados a objetos. "Clase" encapsula datos y es una abstracción de entidades de datos del mismo tipo y sus métodos de procesamiento. En Rust, podemos usar estructuras o enumeraciones para implementar las funciones de la clase:
pub struct ClassName {}} pub campo: Tipo, } pub impl ClassName { fn some_method(&self) { // Cuerpo de la función del método } } pub enum EnumName { A, B, } pub impl EnumName { fn some_method(&self) { } }
A continuación, construyamos una clase completa:
second.rs pub struct ClassName {}} campo: i32, } impl ClassName { pub fn new(value: i32) -> ClassName { ClassName { campo: valor } } pub fn public_method(&self) { println!("from método público"); self.private_method(); } fn private_method(&self) { println!("from método privado"); } } main.rs mod second; use second::ClassName; fn main() { let object = ClassName::new(1024); object.public_method(); }
Resultado de salida:
from método público from método privado
Casi todos los lenguajes de programación orientados a objetos pueden implementar " herencia " y usar el verbo " extend " para describir esta acción.
La herencia es la implementación de la idea de polimorfismo (Polymorphism), que significa que el código de un lenguaje de programación puede manejar varios tipos de datos. En Rust, se implementa el polimorfismo a través de traits. Los detalles de los traits se dan en el capítulo " Traits ". Sin embargo, los traits no pueden implementar la herencia de atributos, solo pueden implementar funciones similares a " interfaces ", por lo que es mejor definir un ejemplo de " padre " en el " hijo " si se desea heredar métodos de una clase.
En resumen, Rust no ofrece语法as de azúcar para la herencia y no hay métodos oficiales de herencia (equivalentes alheritance de clases en Java), pero la gramática flexible aún puede implementar funciones relacionadas.