Chapter7 复用类

复用类有两种方式,组合继承

子类构造器被调用之前java会自动调用父类构造器(可以不显示出现在子类构造器代码中)。(当父类存在默认构造器时)。

如果父类只有一个带参数的构造器,那么子类构造器代码中则需要显示的调用父类构造器。

当你想要覆写某个父类的方法时,可以添加@override注解。

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

子类引用转换为父类引用,被称作向上转型


7.8 final关键字的使用(数据,方法和类)


7.8.1 final 数据

向编译器告知一块数据是恒定不变的。

1.一个永不改变的编译时常量。(编译时常量可以在编译时期执行计算式,从而减轻运行时的负担。在java中,这类常量必须是基本数据类型,并且以final表示。)

2.一个在运行时被初始化的值,而你不希望它被改变。

一个既是static又是final的域只占据一段不能改变的存储空间。

当final修饰一个对象引用而非基本数据类型时,这表示该引用不能再指向其他的对象。


7.8.2 final方法

将方法锁定,防止任何继承类修改它。


7.8.3 final 类

将类定义为final,表示你不打算继承该类,而且也不允许别人这样做。



7.9 初始化与类的加载

类的代码在初次使用时才被加载,这通常是指加载发生于创建类的第一个对象之时,但当访问static域或static方法时,也会发生加载。(构造器也是static方法,因此更准确的讲,类是在任何static成员被访问时加载的)。

子类对象创建过程:

1.加载子类,发现子类继承父类,进而加载父类,执行父类的静态初始化动作。

2.执行子类的静态初始化动作。

3.子类分配对象空间并清零。然后调用父类构造器(调用父类构造器之前会先执行父类成员定义处的初始化动作)。

4.执行子类成员定义处的初始化动作。

5.执行子类构造器。

你可能感兴趣的:(Chapter7 复用类)