今天做了一道題,有關於繼承
我在想,怎樣讓子類中的構造函數給它繼承的父類的私有變量radius賦值,顯然是要通過調用構造函數,在c++里,可以這樣
Cylinder(double r,double h):Circle(r){
...(代碼塊)
}
但在Java中我試了一下,不行,百度一下之后,要調用super函數,這里有很多重難點。
1.首先我們得明白,繼承是不會繼承構造函數,只能調用(隱式或顯式)
2.如果父類沒有定義構造函數或者存在無參構造函數,所有子類的構造函數會默認調用父類的構造函數(即在最前面省略了super();)
3.如果父類沒有無參的構造函數,或者是子類的構造函數想調用父類的含參構造函數(就像這題一樣,我們希望調用Circle的含參構造函數來初始化radius),就要第一行顯式使用super( [arg0][,arg1]….),顯式調用的參數類型,參數個數和你想調用的父類構造函數對應,注意一定要寫在第一行,否則編譯不通過。