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.执行子类构造器。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容