java面向对象——类的继承和基于继承关系的初始化顺序

一.类的继承

1.class aa extends AA这个就表示aa作为子类继承于父类AA。

2.当用一个子类继承一个父类时,它就会继承父类的所有属性和方法。

3.很多时候,子类的方法和父类中的方法不一样,子类可以写一个一模一样的方法来实现覆盖。

4.如果子类覆盖父类的构造方法后,想调用父类的方法时,可以用super.xx来调用。


相关例子:(包含内存模型)

相关代码
输出结果
内存模型


二.基于继承关系的初始化顺序


1.基于继承关系的初始化顺序:

a.首先创建子类之前先创建父类

b.然后来创建类的静态成员

c.之后创建属性

d.最后调用构造函数


2.特别注意:

a.创建子类之前都会先创建父类,并且调用不带参数的构造函数创建父类。

b.如果父类没有不带参数的构造函数,创建子类就会报错。

c.解决问题的方法是:在子类中的每一个构造函数中通过super来手动指明构造函数。


相关例子:

相关代码
输出结果

手动调用了一个父类的构造函数来构造父类

特别注意:不是使用super.xx而是直接通过super()来调用

关于构造方法的事,在继承中,因为子类可能用到父类中的数据,所以在子类构造方法的默认第一句都是系统自动添加父类的空参构造方法,如果父类中没有空参构造,就要显式的调用父类有参的构造方法,在创建子类对象之前,必须调用父类的构造方法对父类中的数据进行初始化。如果父类没有空参构造,而你又没有在子类中显式的调用父类的有参构造,这时就会报错。所以,子类构造方法必须显式调用父类的构造方法。

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

相关阅读更多精彩内容

友情链接更多精彩内容