Rust for cpp devs - 面对对象

面对对象编程有三个特点:

  • 对象
  • 封装
  • 继承

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 来实现类似的功能,具体在另一章介绍。

推荐阅读更多精彩内容