第1章 对象导论
1.1 抽象过程
1)万物皆为对象。
2)程序是对象的集合,它们通过发送消息来告知彼此所要做的。
3)每个对象都有自己的由其他对象所构成的存储。
4)每个对象都拥有其类型。
5)某一特定类型的所有对象都可以接收同样的消息。
1.2 每个对象都有一个接口
请求由对象的接口所定义
1.3 每个对象都提供服务
高内聚:一个软件构件的各个方面组合得很好
1.4 被隐藏的具体实现
类创建者 vs 客户端程序员
public
任何人可用
默认 包访问权限
protected
继承类可以访问
private
仅类型创建者和类型内部方法访问
1.5 复用具体实现
组合,has-a关系,e.g.汽车拥有引擎。首先考虑组合,因更简单灵活。
1.6 继承
继承,is-a关系,e.g.一个圆形是一个几何形状
使基类与导出类产生差异:
1)在导出类添加新方法
2)覆盖(override)基类方法
1.7 伴随多态的可互换对象
后期绑定、向上转型
void doSomething(Shape shape) {}
doSomething(circle);
1.8 单根继承结构
终极基类:Object
1.9 容器
参数化类型
Java范型:ArrayList<Shape> shapes = new ArrayList<Shape>();
1.10 对象的创建和生命期
C++:将对象置于堆栈或静态存储区域
Java:在被称为堆(heap)的内存池中动态地创建对象
动态内存分配方式,new
垃圾回收器
1.11 异常处理:处理错误
抛出异常,捕获异常
Java内置异常处理,非面向对象特征
1.12 并发编程
线程:为单一处理器分配执行时间
如果多处理器,任务可以被指派给不同处理器,真正并行执行
共享资源问题
1.13 Java与Internet(略)
1.14 总结
过程型语言 vs OOP