一、继承与组合数组
复用类的方法有两种:继承与组合。继承就很少说了,组合就是直接在类中new一个对象。
spa
数组也是对象,使用数组也是组合的一种。代理
二、初始化基类对象
当建立一个导出类的对象时,该对象包含一个基类的子对象。这个子对象跟直接new一个基类的对象彻底相同,惟一的区别是:一个在外部,一个被包装在导出类对象内部。
继承
在导出类构造器中,经过调用基类构造器来执行初始化。【在Java中,全部导出类的全部构造器内部都必须调用父类的某一个构造器或全部导出类的全部构造器内部都必须调用一个其余构造器(既能够是本类构造器也能够是父类的构造器),可是最终必须调用到父类的某一个构造器。也就是说,必须确保可以正确初始化父类对象。若是没有显式调用其它构造器,JVM会默认为你添加调用父类无参构造的代码,若是父类已经显式定义其余有参构造而没有定义无参构造,则会报找不到的编译期异常。】
编译器
三、代理:介于继承与组合的“中庸之道”编译
1)将一个成员对象置于所需构建的类中(相似组合)
变量
2)在新类中暴露该成员对象的全部方法(相似继承)
方法
四、继承与组合的商榷技术
组合比继承经常使用得多;
应该慎用继承技术,多用组合。由于组合的方式比继承灵活得多。
那么应该什么时候使用继承更加适合呢?下面是判断依据:
是否须要重新类向基类进行向上转型?
1)若是必须向上转型,则继承是必须的;
2)若是不须要,则应好好考虑继承与组合的取舍。
五、final关键字
用来修饰数据、方法和类。
final状态表示最终状态:(若是是变量)不可修改、(若是是方法)不可覆盖、(若是是类)不可继承。
static final 【】:表示编译器常量;
private 方法,隐含着final做用(由于他一样不可覆盖和修改等)。