|
|
@ -18,7 +18,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
在这个定义下,Rust 是面向对象的:结构体和枚举包含数据而 `impl` 块提供了在结构体和枚举之上的方法。虽然带有方法的结构体和枚举并不被 **称为** 对象,但是它们提供了与对象相同的功能,参考 *The Gang of Four* 中对象的定义。
|
|
|
|
在这个定义下,Rust 是面向对象的:结构体和枚举包含数据而 `impl` 块提供了在结构体和枚举之上的方法。虽然带有方法的结构体和枚举并不被 **称为** 对象,但是它们提供了与对象相同的功能,参考 *The Gang of Four* 中对象的定义。
|
|
|
|
|
|
|
|
|
|
|
|
### 封装隐藏实现细节
|
|
|
|
### 封装隐藏了实现细节
|
|
|
|
|
|
|
|
|
|
|
|
另一个通常与面向对象编程关联的概念是 **封装**(*encapsulation*):一个对象的实现细节对使用该对象的代码不可访问。因此,对象交互的唯一方式是通过其公共 API;使用对象的代码不应能直接触及对象的内部并改变数据或行为。这使得程序员能够更改和重构一个对象的内部实现,而无需改变使用该对象的代码。
|
|
|
|
另一个通常与面向对象编程关联的概念是 **封装**(*encapsulation*):一个对象的实现细节对使用该对象的代码不可访问。因此,对象交互的唯一方式是通过其公共 API;使用对象的代码不应能直接触及对象的内部并改变数据或行为。这使得程序员能够更改和重构一个对象的内部实现,而无需改变使用该对象的代码。
|
|
|
|
|
|
|
|
|
|
|
@ -50,7 +50,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
如果封装被认为是面向对象语言所必要的特征,那么 Rust 满足这个要求。在代码中不同的部分控制 `pub` 的使用来封装实现细节。
|
|
|
|
如果封装被认为是面向对象语言所必要的特征,那么 Rust 满足这个要求。在代码中不同的部分控制 `pub` 的使用来封装实现细节。
|
|
|
|
|
|
|
|
|
|
|
|
## 继承作为类型系统与代码共享
|
|
|
|
## 继承,作为类型系统与代码共享
|
|
|
|
|
|
|
|
|
|
|
|
**继承**(*Inheritance*)是一种机制:一个对象可以从另一个对象的定义中继承元素,从而获得父对象的数据和行为,无需再次定义。
|
|
|
|
**继承**(*Inheritance*)是一种机制:一个对象可以从另一个对象的定义中继承元素,从而获得父对象的数据和行为,无需再次定义。
|
|
|
|
|
|
|
|
|
|
|
|