第一章 对象导论
1、基本特性
普适性 组成程序 可互相嵌套 有对应类型 可替代性
2、观点:任何程序都是程序员所设计系统的一种仿真
3、对象提供服务
视作对象的优点:提高对象的内聚性
-
高内聚:各方面组合的很好
4、隐藏的具体实现
-
类创建者 / 客户端程序员:访问控制
- 边界:public private protected
5、复用的具体实现
-
组合 / 聚合(动态的组合):创建成员对象
-
先考虑组合,后继承:前者较简单灵活
6、继承
-
可构建类型层次结构
-
类型等价性:导出类和基类拥有相同的类型
- 修改:为导出类添加新方法 / 覆盖(纯粹替代 or 扩展)
7、多态
-
泛化:视作基类而非对象
-
后期绑定:直到运行才可确定代码地址
-
向上转型 up cast:一个基类在继承图中向上移动
8、单根继承结构
-
终极基类:Object
-
相对 C++ 可实现垃圾回收
9、容器
-
定义上近似等同于集合,如 C++ 中的 STL 容器
-
提供不同类型的接口和外部行为
-
对同一操作不同容器效率可能不同
-
参数化类型(范型):向下转型(不安全)
1 | // 创建一个存储Shape的顺序表 |
10、对象的创建和生命期
-
基本逻辑假设:对象复杂化 - 查找和释放空间的开销不会对创建对象造成过大冲击
-
Java 是在堆栈中存储和释放空间的动态内存分配方式
- 反观 C++:需要在编程时就确定生命周期,牺牲了部分灵活性,侧重效率控制
-
使用垃圾回收器,自发发现不再被使用的对象,有效避免内存泄漏
11、必须编写异常处理的代码