學習Rust 物件導向
Rust 語言是一種高效、可靠的通用高階語言。其高效不僅限於開發效率,它的執行效率也是令人稱讚的,是一種少有的兼顧開發效率和執行效率的語言。 |
物件導向的程式語言通常實現了資料的封裝與繼承並能基於資料呼叫方法。
Rust 不是物件導向的程式語言,但這些功能都得以實現。
封裝
封裝就是對外顯示的策略,在 Rust 中可以透過模組的機制來實現最外層的封裝,並且每一個 Rust 檔案都可以看作一個模組,模組內的元素可以透過 pub 關鍵字對外明示。這一點在"組織管理"章節詳細敘述過。
"類"往往是物件導向的程式語言中常用到的概念。"類"封裝的是資料,是對同一類資料實體以及其處理方法的抽象。在 Rust 中,我們可以使用結構體或列舉類來實現類的功能:
例項
pub struct ClassName { pub field: Type, } pub impl ClassName { fn some_method(&self) { // 方法函式體 } } pub enum EnumName { A, B, } pub impl EnumName { fn some_method(&self) { } }
下面建造一個完整的類:
例項
second.rs pub struct ClassName { field: i32, } impl ClassName { pub fn new(value: i32) -> ClassName { ClassName { field: value } } pub fn public_method(&self) { println!("from public method"); self.private_method(); } fn private_method(&self) { println!("from private method"); } } main.rs mod second; use second::ClassName; fn main() { let object = ClassName::new(1024); object.public_method(); }
輸出結果:
from public method from private method
繼承
幾乎其他的物件導向的程式語言都可以實現"繼承",並用"extend"詞語來描述這個動作。
繼承是多型(Polymorphism)思想的實現,多型指的是程式語言可以處理多種型別資料的程式碼。在 Rust 中,透過特性(trait)實現多型。有關特性的細節已在"特性"章節給出。但是特性無法實現屬性的繼承,只能實現類似於"介面"的功能,所以想繼承一個類的方法最好在"子類"中定義"父類"的例項。
總結地說,Rust 沒有提供跟繼承有關的語法糖,也沒有官方的繼承手段(完全等同於 Java 中的類的繼承),但靈活的語法依然可以實現相關的功能。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2746439/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP學習4——物件導向PHP物件
- Lua學習(二)物件導向物件
- 【python 物件導向】 python物件學習筆記《1》Python物件筆記
- java學習——物件導向之繼承Java物件繼承
- 物件導向-物件導向思想物件
- Python 3 學習筆記之——物件導向Python筆記物件
- Python學習之物件導向程式設計Python物件程式設計
- Flutter學習筆記(8)--Dart物件導向Flutter筆記Dart物件
- Python學習筆記|Python之物件導向Python筆記物件
- js高階 物件導向 學習筆記JS物件筆記
- 3. Struct 與 物件導向 |《 刻意學習 Golang 》Struct物件Golang
- 大資料學習之路——java物件導向(二)大資料Java物件
- javascript 物件導向學習(三)——this,bind、apply 和 callJavaScript物件APP
- Python學習之路——類-物件導向程式設計Python物件程式設計
- 草根學Python(九) 物件導向Python物件
- Python學習之物件導向高階程式設計Python物件程式設計
- javascript ES5 物件導向的學習總結JavaScript物件
- 物件導向與程式導向物件
- 程式導向與物件導向物件
- “程序導向”和“物件導向”物件
- 物件導向物件
- python物件導向練習題01Python物件
- 物件導向,搞定物件物件
- JAVA物件導向基礎--物件導向介紹Java物件
- PHP 物件導向 (九)物件導向三大特徵PHP物件特徵
- Python 學習筆記之類「物件導向,超類,抽象」Python筆記物件抽象
- Java零基礎學習之路(八)Java物件導向Java物件
- 初學Solidity(三):Solidity物件導向Solid物件
- PHP物件導向PHP物件
- 物件導向 -- 反射物件反射
- JavaScript 物件導向JavaScript物件
- JS物件導向JS物件
- Java物件導向Java物件
- Python——物件導向Python物件
- 物件導向--下物件
- scala物件導向物件
- 物件導向(下)物件
- Python物件導向Python物件