@隔葉黃鶯
在構造子類實例前必須構造一個父類實例作為子類實例的部分
這句話太正確了。
如果沒有默認增加ClassName()構造方法。
暈,剛剛發現,句讀錯了,中間有個逗號。汗一個 XD
如果沒有,默認增加ClassName()構造方法。
其實 俺這篇文字 完全可以三句話說完的
第一句,任何一個類都有Constructor
第二句,任何一個類的Constructor第一行代碼就是調用父類的構造函數
第三局,就是 以上兩句說的東西,你可以代碼中不寫,因為有默認實現,并且默認實現與編碼出來的實現不能并存,會被覆蓋。
XD 騙字數而已 XD
@Matthew Chen
是,繼承另一個類也許更加清楚一些,但是 既然文章的主要意思是說默認實現與覆蓋關系的 hoho 這么說是一種慣性XD
@隔葉黃鶯
在構造方法內部,編譯器會檢查第一行代碼是否為super構造方法,如果不是,默認添加super()
按照上面這句話的理解 就是
package org.myth.test;
public class SuperSon extends SuperMan{
SuperSon(){
System.out.println("this is super son");
}
}
其實等同于
package org.myth.test;
public class SuperSon extends SuperMan{
SuperSon(){
super();
System.out.println("this is super son");
}
}
顯然,父類中是不存在無參數構造方法的,所以編譯器回報錯,不存在super()構造方法。
另外,對于您說的has-a的關系,特定界定之下可以這么講,但是更準確而言,子類是父類 應該是is a 的關系。
暈 大家難道就沒有 發現 遞歸 運算最大的問題是重復計算嘛?
@隔葉黃鶯
這個問題,你看我最后一個錯誤代碼示例 就知道了 ^_^