继承中构造方法的关系:
A. 子类中所有的构造方法默认都会访问父类中空参数的构造方法;
B. 为什么呢?
因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前一定要先完成父类数据的初始化。
a. 数据在使用之前必须初始化。对于成员变量可以使用默认值。
b. 那么问题来了?难道成员方法不需要初始化吗?成员方法是怎么初始化的?
注意:
子类每一个构造方法的第一条语句默认都是: super( ) ;
如果父类中没有无参构造方法。那么在子类的构造方法默认调用父类的无参构造方法时就会出错。这是有两个解决办法:
1. 在父类中写出父类的无参构造方法;
2. 在子类的每一个构造方法中都显式的调用父类的有参构造方法。即:super(……) ;
3. 在子类的构造方法的第一句调用 this(……)语句。前提是this关键字调用的构造方法已经调用了父类的构造方法。
注意:
this(……)和super(……)必须出现在第一条语句上。
如果不是在第一句上,第一句就可能会默认调用父类的无参构造方法。导致多次调用父类的构造方法。会报错。
|
|