在調用子類構造器之前,會先調用父類構造器,當子類構造器中沒有使用"super(參數或無參數)"指定調用父類構造器時,是默認調用父類的無參構造器,如果父類中包含有參構造器,卻沒有無參構造器,則在子類構造器中一定要使用“super(參數)”指定調用父類的有參構造器,不然就會報錯。
示例:
由於父類Base沒有無參構造器,所以Derived必須顯式地調用Base的有參構造器,不然會報錯。
class Base{
public Base(String s){
System.out.print("B");
}
}
public class Derived extends Base{
public Derived (String s) {
//正確的方式需要添加一行:
//super(s);
System.out.print("D");
}
public static void main(String[] args){
new Derived("C");
}
}