1.纯粹的面向对象设计
1)万物皆为对象。
2)程序是对象的集合,他们通过发送消息来告诉彼此所要做的。
3)每个对象都有自己的由其他对象所构成的存储。
4)每个对象都拥有其类型。
5)某一特定的所有对象都可以接受同样的消息。
2."is-a"(是一个) 与 "is-like-a"(像是一个) 关系
例子:温度控制系统
Thermostat.png
"is-a" (是一个)
继承只覆盖基类的方法 (而并不添加在基类中没有的新方法)。可以用一个导出类对象来完全代替一个基类对象。这可以被视为纯粹代替,通常称之为代替原则。经常将这种情况下的基类与导出类之间的关系称为is-a(是一个)关系。
A Air Conditioner is a Cooling System.
"is-like-a" (像是一个)
导出类型中添加新的接口元素,这个新的类型仍然可以替代基类,但是这种替代并不完美。这种情况描述为is-like-a(像是一个)关系。
A Heat Pump is like a Cooling System.
3.伴随多态的可互换对象
BirdController.png
void doSomething(Shape shape){
shape.erase();
shape.draw();
}
Circle circle = new Circle();
Triangle triangle = new Triangle();
Line line = new Line();
// 向上转型
doSomething(circle);
doSomething(triangle);
doSomething(line);
4.单根继承结构
所有类都继承自单一的基类,这个终极基类:Object