public Tiger(int age) { this.age = age; print(); } public void print() { System.out.println("I'am a " + age + "歲 " + hight + "尺高 tiger!"); } } public class JavanTiger extends Tiger { public JavanTiger() { super(1); // 調用父類有參數的構造函數 } public static void main(String[] args) { new JavanTiger(); } }
這段代碼中的 super(1)必須要寫進去,否則編譯器會報錯。所以我簡單的總結了一下,“this()是調用自己其他的構造函數,super()是調用自己繼承的父類的構造函數“,如果只想調用默認無參數的父類構造函數,不用在子類的構造函數當中寫出來,但是實際編程的時候,總是會忽略這一點。 那門這兩個關鍵字能不能同時出現在子類的一個構造函數當中納?答案肯定是不能。先說下自己的理解: 1)在新建一個基類的時候,不論遞歸調用幾次自身的構造函數,最終你都會去調用父類的構造函數,(不是顯式調用的話,系統會調用默認無參數的父類構造函數); 2)JAVA 中規定使用 this 和 super 時必須放在構造函數第一行,只有一個第一行;