小白教程
所有教程
关于
Search
172.70.100.47
172.70.100.47
参数设置
贡献
退出
操作
编辑
移动
保护
信息
历史
删除
查看“Rust 面向对象”的源代码
本页内容
上一节:
Rust_集合与字符串
下一节:
Rust_并发编程
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:Rust 面向对象}}[[Category:Rust 教程|21]] = Rust 面向对象 = 面向对象的编程语言通常实现了数据的封装与继承并能基于数据调用方法。 Rust 不是面向对象的编程语言,但这些功能都得以实现。 === 封装 === 封装就是对外显示的策略,在 Rust 中可以通过模块的机制来实现最外层的封装,并且每一个 Rust 文件都可以看作一个模块,模块内的元素可以通过 pub 关键字对外明示。这一点在"组织管理"章节详细叙述过。 "类"往往是面向对象的编程语言中常用到的概念。"类"封装的是数据,是对同一类数据实体以及其处理方法的抽象。在 Rust 中,我们可以使用结构体或枚举类来实现类的功能: <sample title="" desc="" lang="rust" hererun="1"> 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) { } } </sample> 下面建造一个完整的类: <sample title="" desc="" lang="rust" hererun="1"> 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(); } </sample> 输出结果: <pre>from public method from private method</pre> === 继承 === 几乎其他的面向对象的编程语言都可以实现"继承",并用"extend"词语来描述这个动作。 继承是多态(Polymorphism)思想的实现,多态指的是编程语言可以处理多种类型数据的代码。在 Rust 中,通过特性(trait)实现多态。有关特性的细节已在"特性"章节给出。但是特性无法实现属性的继承,只能实现类似于"接口"的功能,所以想继承一个类的方法最好在"子类"中定义"父类"的实例。 总结地说,Rust 没有提供跟继承有关的语法糖,也没有官方的继承手段(完全等同于 Java 中的类的继承),但灵活的语法依然可以实现相关的功能。
返回至“
Rust 面向对象
”。
上一节:
Rust_集合与字符串
下一节:
Rust_并发编程