公有繼承、私有繼承、保護繼承是常用的3種繼承方式。
1.公有繼承方式
基類成員對其物件的可見性與一般類及其物件的可見性相同,公有成員可見,其他成員不可見。這裡保護成員與私有成員相同。
基類成員對派生類的可見性對派生類來說,基類的公有成員和保護成員可見,基類的公有成員和保護成員作為派生類的成員時,他們都保持原有的狀態;基類的私有成員不可見,基類的私有成員仍然是私有的,派生類不可訪問基類中的私有成員。
基類成員對派生類物件的可見性對派生類物件來說,基類的公有成員是可見的,其他成員是不可見的。
所以,在公有繼承時,派生類的物件可以訪問基類中的公有成員,派生類的成員函式可以訪問基類中的公有成員和保護成員。
2.私有繼承方式
基類成員對其物件的可見性與一般類及其物件的可見性相同,公有成員可見,其他成員不可見。
基類成員對派生類的可見性對派生類來說,基類的公有成員和保護成員是可見的:基類的公有成員和保護成員都作為派生類的私有成員,並且不能被這個派生類的子類所訪問;基類的私有成員是不可見的:派生類不可訪問基類中的私有成員。
基類成員對派生類物件的可見性對派生類物件來說,基類的所有成員都是不可見的。
所以,在私有繼承時,基類的成員只能由直接派生類訪問,而無法再往下繼承。
3.保護繼承方式
這種繼承方式與私有繼承方式的情況相同。兩者的區別僅在於對派生類的成員而言,
基類成員對其物件的可見性與一般類及其物件的可見性相同,公有成員可見,其他成員不可見。
基類成員對派生類的可見性對派生類來說,基類的公有成員和保護成員是可見的:基類的公有成員和保護成員都作為派生類的保護成員,並且不能被這個派生類的子類所訪問;(關於這句話真的值得商榷,因為我在vs2017上實驗過,連續三個protected繼承,最底層派生類內部依然可以訪問原始基類的公有和保護成員變數)
基類的私有成員是不可見的:派生類不可訪問基類中的私有成員。
基類成員對派生類物件的可見性對派生類物件來說,基類的所有成員都是不可見的。
所以,在保護繼承時,基類的成員也只能由直接派生類訪問,而無法再往下繼承。
派生類的三種繼承方式總結
1,公有繼承方式 在公有繼承時 1 派生類的物件可以訪問基類中的公有成員 2 派生類的成員函式可以訪問基類中的公有成員和保護成員。2,保護繼承方式 在保護繼承時 1 派生類的物件對基類的所有成員都不可訪問 2 派生類的成員函式可以訪問基類中的公有成員和保護成員,但是它們都作為派生類的保護成員 3,私...
C 派生類的繼承方式 C 繼承
分類 四類訪問 類的作用域運算 小結why public?結論當類的繼承方式為公有繼承時,基類的公有成員和保護成員的訪問屬性在派生類中不變,而基類的私有成員在派生類中不可訪問。即基類的公有成員和保護成員被繼承到派生類中仍作為派生類的公有成員和保護成員。派生類的其他成員可以直接訪問它們。無論派生類的成...
類的三種繼承方式
類的繼承方式 公有型 public 保護型 protected 私有型 private 訪問控制修飾符也有public protected private3種型別。繼承方式不同,可訪問性也不同,這個部落格也很詳細 公有型派生 公有型派生表示對於基類中的public資料成員和成員函式,在派生類中依舊是...