重点:
1.子类的构造的过程中必须调用其基类(父类)的构造方法(使用super())。也就是说想要构造出子类,必须要先构造出父类,即没有父亲何来的儿子。
2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。
使用this(argument_list)调用本类的另外的构造方法。
如果调用super,必须写在子类构造方法的第一行。
3.如果子类的构造方法中没有显示地调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。
验证第三点的例子:
// 定义一个父类
class SuperClass {
private int id;
SuperClass(int id){
System.out.println("父类有参构造器");
}
}
// 定义一个子类继承父类
class SubClass extends SuperClass {
private int id;
// 子类的构造方法
SubClass(int id) {
// 这里子类的构造方法中没有显示地调用基类构造方法
System.out.println("子类的有参构造器");
}
}
// 内部类
public class TestSuperSub {
public static void main(String[] args){
SubClass sc1 = new SubClass(400);// 实例化过程,因为子类中没有显示地
调用父类构造函数,同时父类也没有提供无参构造函数,所以会编译失败。
}
}
扩展:如果父类中加上:
SuperClass(){System.out.println("父类无参构造函数"}则可以构造出子类对象sc1
浙公网安备 33010602011771号