不同繼承方式的基類和派生類特性
繼承方式 | 基類特性 | 派生類特性 |
公有繼承 | public | public |
protected | protected | |
private | 不可訪問 | |
私有繼承 | public | private |
protected | private | |
private | 不可訪問 | |
保護繼承 | public | protected |
protected | protected | |
private | 不可訪問 |
1.理解1
(1)對于公有繼承方式:
a.基類成員對其對象的可見性:公有成員可見,其他不可見。這里保護成員同于私有成員。
b.基類成員對派生類的可見性:公有成員和保護成員可見,而私有成員不可見。這里保護成員同于公有成員。
c.基類成員對派生類對象的可見性:公有成員可見,其他成員不可見。
所以,在公有繼承時,派生類的對象可以訪問基類中的公有成員;派生類的成員函數可以訪問基類中的公有成員和保護成員。這里,一定要區(qū)分清楚派生類的對象和派生類中的成員函數對基類的訪問是不同的。
(2) 對于私有繼承方式:
a.基類成員對其對象的可見性: 公有成員可見,其他不可見。
b.基類成員對派生類的可見性:公有成員和保護成員可見,而私有成員不可見
c.基類成員對派生類對象的可見性:所有成員都是不可見的。
所以,在私有繼承時,基類的成員只能由直接派生類訪問,而無法再往下繼承。
(3) 對于保護繼承方式:
與私有繼承方式相同,兩者的區(qū)別僅在于對派生類的成員而言,對基類成員有不同的可見性。
2.理解B2
(1)公有繼承時,水平訪問和垂直訪問對基類中的公有成員不受限制。
(2) 私有繼承時,水平訪問和垂直訪問對基類中的公有成員也不能訪問。
(3) 保護繼承時,對于垂直訪問同于公有繼承,對于水平訪問同于私有繼承。
(4)對于基類中的私有成員,只能被基類中的成員函數和友元函數訪問,不能被其他的函數訪問。
3.理解3
在公有繼承時,派生類的成員函數可訪問基類中的公有成員和保護成員;派生類的對象僅可訪問基類中的公有成員。
新聞熱點
疑難解答