父類構造方法對子類構造方法的影響

2021-09-25 20:23:18 字數 1451 閱讀 5483

此時有子類在繼承父類時,第五行被注釋掉的**無論寫還是不寫,都會呼叫父類的無參構造方法。現在我們先看如下**:

package com.jd.service;

public class father

package com.jd.service;

public class son extends father

public static void main(string args)

}

此時子類的**執行結果應為「父類構造方法」「子類構造方法」,說明了super()為子類呼叫父類的無參構造方法,且這行**是預設的,無論寫不寫都會執行。

需要先補充說明一點:如果父類中什麼構造方法都沒有,則預設為無參構造方法;如果父類裡有乙個有參構造方法,此時其預設的無參構造方法消失,這也就是為什麼上述子類**的第九行報錯,原因就是這時在子類中被呼叫的此構造方法沒有呼叫本類中的其他構造方法,則該構造方法預設有乙個super(),而此時父類中已經沒有了無參的構造方法,所以這裡報錯。

package com.edu.zzu.test;

public class father

public father(double price)

public father(string name)

}package com.edu.zzu.test;

public class son extends father

public son (int age)

public static void main(string args)

}

此時,該子類**的執行結果為

分析**:此時子類中的第九行**super(「」)是直接呼叫父類中的第二個構造方法,子類中的第五行**this(12)則是間接呼叫父類中的第二個構造方法,先呼叫本類第乙個有參構造方法,而第乙個有參構造方法直接呼叫了父類第二個構造方法。

package com.edu.zzu.test;

public class son extends father

public son (int age)

public static void main(string args)

}

父類構造方法對子類構造方法影響

1 乙個類中如果沒有定義構造方法,預設有乙個無參構造方法,其結構如下 public 類名 其中super 關鍵字可以省略不寫,缺省會呼叫父類無參構造方法。需要注意的是,如果乙個類中定義了乙個有參構造方法,則無參構造方法不再贈送,需要自行編寫。2 this 引數列表 呼叫本類構造方法,但必須放在有效 ...

父類構造方法對子類構造方法影響

乙個類中如果沒有構造方法,預設有乙個無參構造方法,其結構為 public 類名 建立乙個父類與子類 父類 public class father 子類 public class sonextends father public class test 則此時輸出結果為 父類構造方法 子類構造方法。若構...

父類構造方法對子類構造方法的影響

當乙個子類繼承它的父類時,子類除了在屬性和方法上受到父類影響,在構造方法上也會受到父類影響。首先,我們如果想在子類的構造方法中呼叫父類的構造方法,應該用super 如下 父類 public class father 子類 但是如果我們把上段 中的super 去掉再執行,發現執行結果還是和上面一樣,這...