第七章:复用类

组合:只需要在新的类中产生已有类的对象,由于新的类是已有类的对象所组成,所以这种方法称为组合

继承:按照已有类的类型来创建新类,无需改变已有类的形式,采用已有类的形式并在其中添加新代码。这种方式称为继承

代理:在新类中创建已有类的对象,但与此同时我们在新类中暴露了该成员对象的所有方法

在组合和继承之间选择

组合和继承都允许在新的类中放置子对象,组合是显示地这样做,而继承则是隐式的做

组合技术通常用于想在新类中使用现有类的功能而非它的接口这种情形。即在新类种嵌入某个对象,让其实现所需要的功能,但新类的用户看到的只是为新类所定义的接口,而非所嵌入对象的接口。为取得此效果,需要在新类中嵌入一个现有类的private对象

在继承的时候,使用某个现有类,并开发一个它的特殊版本。通常这意味着你在使用一个通用类,并为了某种特殊需求而将其特殊化。

is a关系使用继承来表达的,has a关系使用组合来表达的

向上转型

将父类引用指向子类对象的做法叫做向上转型,向上转型总是安全的

如果新类需要向基类进行转型,则继承是必要的,否则可以考虑使用组合

final关键字
  • final数据:对于基本数据类型,final使数值不变;而对于对象应用,final使引用不变,但对象自身却是可以被修改
  • final参数:将参数声明为final,这意味着无法在方法中更改参数引用锁指向的对象;这一特性主要用来向匿名内部类传递数据
  • final方法:将方法锁定,防止任何继承类修改它的含义,private方法都隐式指定为final的
  • final类:禁止继承

你可能感兴趣的:(第七章:复用类)