在繼承中
一,父類沒有寫出建構函式,
子類的建構函式可以寫成「任何」形式而不用顧及父類的建構函式。
例如:父類為ca,子類為cb,父類中沒有寫出任何建構函式,則子類中可以不寫建構函式,或者建構函式可以寫成以下幾種:
cb(){};
cb():ca(){};
cb(int a, int b){};
cb(int a, int b):ca(){};
這幾種形式都可以。即完全忽略父類的建構函式。
二,父類只寫出了乙個無參建構函式。
則子類可以不寫建構函式,或者寫成以下幾種。
cb(){};
cb():ca(){};
cb(int a, int b){};
cb(int a, int b):ca(){};
即當父類只寫出乙個無參建構函式或者沒有寫建構函式效果是一樣的。
三,父類只寫出了乙個有參建構函式
此時,子類應該「標準」地寫出建構函式,例如
ca(int a, int b){};
cb(int a, int b):ca(a,b){};
或者:ca(int a, int b){};
cb(int a, int b ,int c):ca(a,b){};
四,父類有多個有參建構函式,
此時,子類最少實現乙個父類的建構函式即可。
五,父類有多個有參函式和乙個無參建構函式。
此時,子類只需實現乙個父類的建構函式即可,不管子類實現的是有參建構函式還是無參建構函式。
這時候應該注意,即使子類寫成cb(){};也是正確的,說明父類的無參建構函式可以忽略。甚至寫成cb(int a, int b){};也是正確的。
總結以上幾條可以歸納出c++子類繼承父類時建構函式的寫法的規律為:
1,當父類有顯式寫出的建構函式時,子類最低限度的實現父類中的乙個。
2,當父類沒有顯式寫出建構函式時,子類可以不寫建構函式或者「自由」書寫建構函式。
更為普遍的規律總結如下:子類的建構函式以最少滿足父類的乙個建構函式為準。
C 子類建構函式
建構函式是用來初始化類物件的。如果類中沒有顯式的宣告建構函式,那麼編譯器會自動建立乙個預設的建構函式,並且這個預設的建構函式僅僅在沒有顯式的宣告建構函式的情況下才會被建立。建構函式與父類的其它成員不同,它不能被子類繼承。因此,在建立子類物件時,為了初始化從父類中繼承來的成員變數,編譯器需要呼叫其父類...
java繼承中關於覆蓋方法和子類構造器
覆蓋方法 1.在父類中一些方法並不適合子類所以用新的方法來覆蓋.本文用people類和student類進行解釋 定義父類people public class people public void setname string name public string get public void s...
C 中子類的建構函式
構造方法用來初始化類的物件,與父類的其它成員不同,它不能被子類繼承 子類可以繼承父類所有的成員變數和成員方法,但不繼承父類的構造方法 因此,在建立子類物件時,為了初始化從父類繼承來的資料成員,系統需要呼叫其父類的構造方法。如果沒有顯式的建構函式,編譯器會給乙個預設的建構函式,並且該預設的建構函式僅僅...