面对对象编程有三个特点:
- 对象
- 封装
- 继承
Rust 中的对象
根据设计模式圣经“四人帮”的定义:
Object-oriented programs are made up of objects. An object packages both data and the procedures that operate on that data. The procedures are typically called methods or operations.
Rust 中的 struct
定义了数据,impl
为这些数据定义了操作,因此 Rust 是支持对象的。
Rust 中的封装
封装的定义是调用者只能通过公共 API 访问对象。
在 Rust 中,我们使用 pub
来决定哪些代码是开放给外界调用的。因此 Rust 支持封装
Rust 中的继承
继承是指一种沿用父类型的数据、行为而不需要再次定义的方式。
Rust 并不支持继承。一个struct
无法继承另一个 struct
的数据成员和方法。
作为替代方案,我们可以用 default trait 定义公共的行为,任何 struct
可以通过 impl
这个 trait 来使用这个默认方法,也可以重写。
此外,继承还有个功能是多态 (polymorphism)。Rust 使用泛型和 trait 来实现类似的功能,具体在另一章介绍。
网友评论