1.子类的构造过程中必须调用父类的构造方法
2.子类可以在自己的构造方法通过super(argument list)来调用父类的构造方法
(1)使用this(argument list)来调用本类另外的构造方法
(2)如果调用super,必须写在子类构造方法的第一行。
3.如果子类的构造方法中没有显示的调用父类构造方法,则系统默认调用父类
无参数的构造方法。
4.如果子类的构造方法中没有显示的调用父类构造方法,,而父类中又没有无
参数的构造方法,则编译出错。
示例代码:
class Superclass{
private int n;
Superclass(){ //无参的构造方法
System.out.println("Superclass()");
}
Superclass(int n){ //有参数的构造方法
System.out.println("Superclass("+n+")");
this.n=n;
}
}
//子类Subclass继承父类Superclass
class Subclass extends Superclass{
private int n;
Subclass(){
System.out.println("Subclass("+n+")");
}
Subclass(int n){
super(300);
System.out.println("Subclass()");
}
}
public class Example01 {
public static void main(String[] args){
Subclass an=new Subclass();
Subclass anb=new Subclass(400);
}
}
第一步:把第25行先注释掉,编译运行,Subclass类new的对象anb调用有参数的构造方法Subclass(int n),通过使用 super(300)调用父类中的有参构造方法,可以看到是先输出Superclass(300).
Superclass(300)
Subclass()
此时若把父类中有参构造方法注释掉,则子类中无法调用父类构造方法,编译出错。此时若把super(300)放到 System.out.println("Subclass()");下面,即super没有写在子类构造方法的第一 行,编译同样会出错。
第二步:把第26行先注释掉,编译运行,Subclass类new的对象an调用无参数的构造方法Subclass,此时虽然没有通过super调用父类构造方法,但系统默认调用父类无参数的构造方法。
Superclass()
Subclass(0)
此时若把父类中无参构造方法注释掉,则子类中无法调用父类构造方法,编译出错。