1. 程式人生 > >java繼承--子父類中的建構函式

java繼承--子父類中的建構函式

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; } */ }