1. 程式人生 > >Java中子類與父類的構造方法

Java中子類與父類的構造方法

子類與父類的構造方法有兩點原則: 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)因此,完全滿足上述的兩條規則。