·复用代码
·复制代码,并加以改变
·代码重用机制~组合(功能)、继承(功能 & 形式)
7.1 组合语法
·组合:将对象引用<置于>新类中即可
·(对象类型)数据域初始化位置:
1.定义的地方——构造器被调用前初始化
2.构造器中
3.惰性初始化
4.使用实例初始化(实例代码块)
7.2 继承语法
·创建一个类时,总是在继承:直接或间接地继承自Object
1.显式继承:程序员用extends指出
2.隐式继承:继承Object
·Java的标准根类:Object
·extends:自动得到基类所有的域和方法(含静态域和静态方法)
7.3 代理
·代理:
·介于继承和组合之间
·将成员对象<置于>所要构造的类中(就像组合),但与此同时,在新类中暴露了该成员对象的 所有方法(就像继承)
·使用代理可以拥有更多的控制力,因为可选择暴露成员对象的方法子集
7.4 结合使用组合和继承
·确保正确清理
7.5 在组合与继承之间选择
·组合技术:适用于想在新类中使用现有类的功能而非它的接口的情形
7.6 protected关键字
7.7 向上转型
·向上转型过程中,类接口中唯一可能发生的事情是丢失方法
·用组合还是继承:问自己是否需要从新类向基类进行向上转型
7.8 final关键字
·final数据:
·static数据,只存一份,可变
·static final数据(编译期常量,大写表示),只存一份,且基本类型不可变、引用类型对象引用不可变(取决于是否为不可变类)
·final基本类型数据:数值恒定不变
·final引用类型数据:对象引用恒定不变(不能让它指向另外一个对象),但是对象未必不可改变(取决于是否为不可变类)
·空白final
·匿名内部类中使用final参数
·类中所有的private方法都隐式地指定为final的
·final方法:禁止覆盖
·final类:禁止继承
7.9 初始化及类的加载
·类的代码在初次使用时才加载
·加载情形:
·创建第一个对象:构造器调用(隐式的static方法)
·静态成员调用:静态域或静态方法的访问