继承是一种 direct code reuse
但个人觉得把代码重用当成OOP的优点说服力不大,JS框架Ext等等将函数复用到了极致,也就是所谓的一次编写多次使用,当然Ext模拟了面向对象的方式来实现重用,但这个其实是OOP的另一个优点:代码的组织优越;代码重用的另一个方面继承机制,可以重用基类的所有代码,但实际上一般情况下派生类所能使用的也只是基类中的公有方法,又回到了重用方法上去了。
is-a relationship,因此私有字段也是继承的,这也是构造函数的作用,实际上由于information hiding的原理,superclass是一个atomic unit.
base class&&derived class
java.io是decorator pattern,也就是嵌套包装提供功能。
包装类和适配器类概念上类似,都是对原有对象的重新封装并增加一些原来不支持的方法。
泛型的最复杂语法:<AnyType extends Comprable<? super AnyType>>