版权声明:本文为博主原创文章,未经博主允许不得转载。 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的成员变量和方法。