English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
I linguaggi di programmazione orientati agli oggetti tipicamente implementano l'encapsulation e l'inherithance dei dati e possono chiamare i metodi basati sui dati.
Rust non è un linguaggio di programmazione orientato agli oggetti, ma queste funzionalità possono essere implementate.
L'encapsulation è una strategia di visualizzazione esterna, in Rust può essere implementata attraverso il meccanismo dei moduli, e ogni file Rust può essere considerato un modulo, gli elementi del modulo possono essere resi visibili all'esterno tramite la parola chiave pub. Questo è dettagliato nella sezione "Organizzazione e gestione".
"Classe" è un concetto spesso utilizzato nei linguaggi di programmazione orientati agli oggetti. "Classe" encapsula dati, rappresentando l'astrazione di entità dati della stessa classe e dei loro metodi di gestione. In Rust, possiamo utilizzare strutture o enum per implementare le funzionalità della classe:
pub struct ClassName {}} pub field: Type, } pub impl ClassName { fn some_method(&self) { // Corpo della funzione del metodo } } pub enum EnumName { A, B, } pub impl EnumName { fn some_method(&self) { } }
Di seguito costruiamo una classe completa:
second.rs pub struct ClassName {}} 字段: i32, } impl ClassName { pub fn new(value: i32) -> ClassName { ClassName { 字段: 值 } } pub fn public_method(&self) { println!("从公共方法"); self.private_method(); } fn private_method(&self) { println!("从私有方法"); } } main.rs mod second; use second::ClassName; fn main() { let object = ClassName::new(1024); object.public_method(); }
输出结果:
从公共方法 从私有方法
几乎其他的面向对象的编程语言都可以实现“继承”,并用“extend”词语来描述这个动作。
继承是多态(Polymorphism)思想的实现,多态指的是编程语言可以处理多种类型数据的代码。在 Rust 中,通过特性(trait)实现多态。有关特性的细节已在“特性”章节给出。但是特性无法实现属性的继承,只能实现类似于“接口”的功能,所以想继承一个类的方法最好在“子类”中定义“父类”的示例。
总结来说,Rust 没有提供与继承相关的语法糖,也没有官方的继承手段(完全等同于 Java 中的类的继承),但灵活的语法依然可以实现相关的功能。