java繼承--子父類中的建構函式
阿新 • • 發佈:2018-11-29
1 子父類建構函式的特點
- 在子類構造物件時,發現,訪問子類建構函式時,父類建構函式也運行了。
原因是:在子類的建構函式中第一行有一個預設的隱式語句。 super();
類似於this(); this();呼叫的是本類的建構函式 - 子類建構函式預設呼叫的是父類中的空引數建構函式,如果需要呼叫父類中帶引數的建構函式,可以在子類建構函式中定義。如:super(6);
- 如果父類中沒有定義空引數建構函式,那麼子類的建構函式必須用super明確要呼叫父類中哪個建構函式。
- 同時子類建構函式中如果使用this呼叫了本類建構函式時,那麼super就沒有了,因為super和this都只能定義第一行,所以只能有一個。但是可以保證的是,子類中肯定會有其他的建構函式訪問父類的建構函式。
- Object是所有類的父類。
- supre語句必須要定義在子類建構函式的第一行。因為父類的初始化動作要先完成。
例項
class Fu
{
int num ;
Fu()
{
num =10;
System.out.println("A fu run");
}
Fu(int x)
{
System.out.println("B fu run..."+x);
}
}
class Zi extends Fu
{
int num;
Zi()
{
//super();//呼叫的就是父類中的空引數的建構函式。
//類似於this() 呼叫的是本類的建構函式
System.out.println("C zi run"+num);
}
Zi(int x)
{
this();
// super(x); //如果需要呼叫父類中帶引數的建構函式,可以在子類建構函式中定義。
System.out.println("D zi run "+x);
}
}
class ExtendsDemo4
{
public static void main(String[] args)
{
new Zi(6);
}
}
class Demo//extends Object //Object是所有類的父類
{
/*
Demo()
{
super();
return;
}
*/
}