【学习笔记】第七章 复用类

来源:互联网 发布:mac如何卸载迅雷插件 编辑:程序博客网 时间:2024/06/05 17:53

复用类的两种方式:

  1. 组合:在新类中包含现有类。
  2. 继承:新类继承自现有类。

初始化基类

class Father {    public Father() {        System.out.println("Father");    }}class Son extends Father {    public Son() {        System.out.println("Son");    }}public class Demo {    public static void main(String[] args) {        Son s = new Son();    }}/*Output:FatherSon*/

子类对象生成时会创建基类对象并包含在子类对象中。
如果基类没有不含参的构造方法则在子类构造方法的第一行用super关键字调用父类构造方法。

子类对象继承自父类对象,希望访问父类的成员及方法,那么创建父类的对象是最好的选择。子类对象不可能凭空产生,需要父类对象先生成,先有父才有子。


代理

在新类中包含现有类对象,并且保留现有类的方法(重新封装)。


如何在组合和继承中选择

组合:在新类中希望借助现有类的功能来完成新类的功能。(has-a)
继承:希望开发出新类的一个特殊版本,拓展其功能。(is-a)


向上转型

将子类转型为其父类或祖类。一个方法的参数可以接受该参数对应类的子类。


final关键字

final常量:一般为基本类型,一旦赋值,其值不可改变。
final引用:该引用只能指向初始化时的对象,不能再指向其他对象。
final参数:在该方法中,无法修改该参数引用指向的对象。
final方法:该方法无法被重写。
final类:不可被继承。


继承与初始化

当当前类被加载时,若当前类继承自某个父类,则加载其父类。
初始化顺序:静态变量/静态代码块 - 匿名代码块 - 成员变量

0 0
原创粉丝点击