|
|
|
@ -1,4 +1,4 @@
|
|
|
|
|
## 什么是面向对象?
|
|
|
|
|
## 什么是面向对象?
|
|
|
|
|
|
|
|
|
|
> [ch17-01-what-is-oo.md](https://github.com/rust-lang/book/blob/master/second-edition/src/ch17-01-what-is-oo.md)
|
|
|
|
|
> <br>
|
|
|
|
@ -90,9 +90,9 @@ public方法`add`、`remove`和`average`是修改`AveragedCollection`实例的
|
|
|
|
|
第二个使用继承的原因是,使用类型系统:子类型可以在父类型被使用的地方使用。这也称为多态,意味着如果多种对象有一个相同的shape,它们可以被其他替代。
|
|
|
|
|
|
|
|
|
|
>虽然很多人使用多态来描述继承,但是它实际上是一种特殊的多态,称为子类型多态。也有很多种其他形式,在Rust中带有通用的ttait绑定的一个参数
|
|
|
|
|
也是多态——更特殊的类型多态。在多种类型的多态间的细节不是关键的,所以不要过于担心细节,只需要知道Rust有多种多态相关的特色就好,不像很多其他OOP语言。
|
|
|
|
|
>也是多态——更特殊的类型多态。在多种类型的多态间的细节不是关键的,所以不要过于担心细节,只需要知道Rust有多种多态相关的特色就好,不像很多其他OOP语言。
|
|
|
|
|
|
|
|
|
|
为了支持这种样式,Rust有trait对象,这样我们可以指定给任何类型的值,只要值实现了一种特色的trait。
|
|
|
|
|
为了支持这种样式,Rust有trait对象,这样我们可以指定给任何类型的值,只要值实现了一种特定的trait。
|
|
|
|
|
|
|
|
|
|
继承最近在很多编程语言的设计方案中失宠了。使用继承类实现代码重用需要共享比你需要共享的代码。子类不应该经常共享它们的父类的所有特色,但是继承意味着子类得到了它的父类的数据和行为。这使得一个程序的设计不灵活,创建了无意义的子类的方法被调用的可能性或者由于方法不适用于子类但是必须从父类继承,从而触发错误。另外,很多语言只允许从一个类继承,更加限制了程序设计的灵活性。
|
|
|
|
|
|
|
|
|
|