子类的构造方法(与super关键字相结合)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fighting123678/article/details/82942590

1、

在这里插入图片描述

隐式调用:子类构造方法没有显示调用父类构造方法(子类中没有super()),那么父类必须显示提供无参构造方法
在这里插入图片描述

在这里插入图片描述

这个时候,系统必须在父类中显示调用无参构造函数


显示调用

在这里插入图片描述

在这里插入图片描述


2、实例1:
在这里插入图片描述
在calcPerimeter方法中使用的是length与4相乘,而不是width,是因为width是pirvate类型的,length是protected类型的,private只能在其所在的类中使用。


3、实例2:
super放在第一行
在这里插入图片描述


4、实例3:

在这里插入图片描述

在new B()的时候,首先要调用父类中无形参构造方法,输出A(),然后才打印B(),在b.f()的时候,因为子类对于父类实现了覆盖,所以输出的是B:f();

如果父类中无形参或者是有形参的构造方法是private类型的话,是无法通过super调用父类构造方法的(因为super关键字不能访问父类中private的成员变量和方法),也就是说无法new出一个对象来。

如果要产生一个继承对象的话,必须先调用父类非private类型的构造方法,然后再用继承对象的构造方法,之后再new出一个对象来。

先调用父类的构造函数(不管是有形参还是无形参),然后再调用子类的构造函数(不管是有形参还是无形参)

super关键字不能访问父类中private的成员变量和方法。

猜你喜欢

转载自blog.csdn.net/fighting123678/article/details/82942590