Java中子類與父類的構造方法
阿新 • • 發佈:2018-12-12
子類與父類的構造方法有兩點原則: 1、子類的構造方法必須呼叫父類的構造方法(原因為什麼,可參考此連結https://blog.csdn.net/y_dzaichirou/article/details/54920715) 2、被子類呼叫的父類構造方法必須存在(這個顯而易見)
下面舉個栗子
class Fu{ String s; } class Zi extends Fu{ public Zi() { System.out.println("Zi "); } } public class Test { public static void main(String[] args) { Zi zi = new Zi (); } }
上面這個程式碼完全可以正常執行,你可能會覺得違背了最初的兩條的原則,其實不是。 1)首先在父類中沒有定義任何的構造方法,那麼在這種情況下,Java虛擬機器會自動給它加上一個無參的構造方法,則父類其實是這樣的
class Fu{
String s;
public Fu() {
}
}
2)在子類中,由於在無參的構造方法中沒有呼叫父類的構造方法,所以Java虛擬機器同樣會給它加上對父類無參構造方法的引用,所以,子類其實是這樣的
class Zi extends Fu{ public Zi() { super();//呼叫父類的無參構造方法 System.out.println("Zi "); } }
3)因此,完全滿足上述的兩條規則。