0%

Java 面向对象(一)—— 对象导论

第一章 对象导论

1、基本特性

普适性 组成程序 可互相嵌套 有对应类型 可替代性

2、观点:任何程序都是程序员所设计系统的一种仿真

3、对象提供服务

视作对象的优点:提高对象的内聚性

  • 高内聚:各方面组合的很好

4、隐藏的具体实现

  • 类创建者 / 客户端程序员:访问控制

    • 边界:public private protected

5、复用的具体实现

  • 组合 / 聚合(动态的组合):创建成员对象

  • 先考虑组合,后继承:前者较简单灵活

6、继承

  • 可构建类型层次结构

  • 类型等价性:导出类和基类拥有相同的类型

    • 修改:为导出类添加新方法 / 覆盖(纯粹替代 or 扩展)

7、多态

  • 泛化:视作基类而非对象

  • 后期绑定:直到运行才可确定代码地址

  • 向上转型 up cast:一个基类在继承图中向上移动

8、单根继承结构

  • 终极基类:Object

  • 相对 C++ 可实现垃圾回收

9、容器

  • 定义上近似等同于集合,如 C++ 中的 STL 容器

  • 提供不同类型的接口和外部行为

  • 对同一操作不同容器效率可能不同

  • 参数化类型(范型):向下转型(不安全)

1
2
// 创建一个存储Shape的顺序表
ArrayList<shape> shapes = new.ArrayList<shape>();

10、对象的创建和生命期

  • 基本逻辑假设:对象复杂化 - 查找和释放空间的开销不会对创建对象造成过大冲击

  • Java 是在堆栈中存储和释放空间的动态内存分配方式

    • 反观 C++:需要在编程时就确定生命周期,牺牲了部分灵活性,侧重效率控制
  • 使用垃圾回收器,自发发现不再被使用的对象,有效避免内存泄漏

11、必须编写异常处理的代码