English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Linguagens de programação orientadas a objetos geralmente implementam encapsulamento e herança de dados e podem chamar métodos com base em dados.
Rust não é uma linguagem de programação orientada a objetos, mas essas funcionalidades podem ser implementadas.
Encapsulamento é a estratégia de exibição externa, que pode ser implementada através do mecanismo de módulos em Rust, onde cada arquivo Rust pode ser visto como um módulo, e os elementos dentro do módulo podem ser explicitamente expostos ao público através da palavra-chave pub. Isso é detalhado na seção "Organização e Gestão".
"Classe" é um conceito frequentemente usado em linguagens de programação orientadas a objetos. "Classe" encapsula dados, abstração de entidades de dados do mesmo tipo e seus métodos de processamento. Em Rust, podemos usar estruturas ou enum para implementar funcionalidades de classe:
pub struct ClassName {}} pub campo: Tipo, } pub impl ClassName { fn some_method(&self) { // Corpo da função do método } } pub enum EnumName { A, B, } pub impl EnumName { fn some_method(&self) { } }
A seguir, construa uma classe 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(); }
Saída do Resultado:
from método público from método privado
Praticamente todas as linguagens de programação orientadas a objetos podem implementar "herança" e usar o termo "extend" para descrever essa ação.
A herança é a implementação da ideia de polimorfismo, onde o polimorfismo se reflete na capacidade da linguagem de programação de lidar com código para vários tipos de dados. No Rust, o polimorfismo é implementado através de traits. Detalhes sobre traits podem ser encontrados no capítulo "Traits". No entanto, traits não podem implementar a herança de atributos, apenas funções semelhantes a "interfaces", então é melhor definir um exemplo de "classe pai" no "subclasse" se você quiser herdar métodos de uma classe.
Em resumo, o Rust não oferece doçura de sintaxe para herança, nem há meios oficiais de herança (igual ao herança de classes no Java), mas a sintaxe flexível ainda pode implementar funções relacionadas.