1. 公有繼承(public)
公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的。
2. 私有繼承(private)
私有繼承的特點是基類的公有成員和保護成員都作為派生類的私有成員,並且不能被這個派生類的子類所訪問。
3. 保護繼承(protected)
保護繼承的特點是基類的所有公有成員和保護成員都成為派生類的保護成員,並且只能被它的派生類成員函式或友元訪問,基類的私有成員仍然是私有的。
下面列出三種不同的繼承方式的基類特性和派生類特性。
不同繼承方式的基類和派生類特性
—————————————————————————————————
繼承方式
| 基類特性
| 派生類特性
—————————————————————————————————
| public
| public
公有繼承
| protected
| protected
| private
| 不可訪問
—————————————————————————————————
| public
| private
私有繼承
| protected
| private
| private
| 不可訪問
—————————————————————————————————
| public
| protected
保護繼承
| protected
| protected
| private
| 不可訪問
—————————————————————————————————
為了進一步理解三種不同的繼承方式在其成員的可見性方面的區別,下面從三種不同角度進行討論。
對於公有繼承方式:
(1)
基類成員對其物件的可見性:
公有成員可見,其他不可見。這裡保護成員同於私有成員。
(2)
基類成員對派生類的可見性:
公有成員和保護成員可見,而私有成員不可見。這裡保護成員同於公有成員。
(3)
基類成員對派生類物件的可見性:
公有成員可見,其他成員不可見。
所以,在公有繼承時,派生類的物件可以訪問基類中的公有成員;派生類的成員函式可以訪問基類中的公有成員和保護成員。這裡,一定要區分清楚派生類的物件和派生類中的成員函式對基類的訪問是不同的。
對於私有繼承方式:
(1)
基類成員對其物件的可見性:
公有成員可見,其他成員不可見。
(2)
基類成員對派生類的可見性:
公有成員和保護成員是可見的,而私有成員是不可見的。
(3)
基類成員對派生類物件的可見性:
所有成員都是不可見的。
所以,在私有繼承時,基類的成員只能由直接派生類訪問,而無法再往下繼承。
對於保護繼承方式:
這種繼承方式與私有繼承方式的情況相同。兩者的區別僅在於對派生類的成員而言,對基類成員有不同的可見性。
上述所說的可見性也就是可訪問性。關於可訪問性還有另的一種說法。這種規則中,稱派生類的物件對基類訪問為水平訪問,稱派生類的派生類對基類的訪問為垂直訪問。
一般規則如下:
公有繼承時,水平訪問和垂直訪問對基類中的公有成員不受限制;
私有繼承時,水平訪問和垂直訪問對基類中的公有成員也不能訪問;
保護繼承時,對於垂直訪問同於公有繼承,對於水平訪問同於私有繼承。
對於基類中的私有成員,只能被基類中的成員函式和友元函式所訪問,不能被其他的函式訪問。
**至微博
**至微博
公有繼承 私有繼承 保護繼承
1.公有繼承 基類成員對派生類的可見性對派生類而言,基類的公有成員和保護成員可見,他們作為派生類的成員時,保持原有的狀態。基類的私有成員不可見,派生類不可訪問基類中的私有成員。基類成員對派生類物件的可見性對派生類物件而言,基類的公有成員是可見的,其他成員不可見。所以,在公有繼承時,派生類的物件可以訪...
C 公有繼承 私有繼承和保護繼承
在c 中有三種繼承方式 公有繼承 public 私有繼承 private 和保護繼承 protected 1.公有繼承 public 公有繼承 基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。2.私有繼承 private ...
8 公有繼承 保護繼承 私有繼承
乙個子類繼承父類時,可按照public private和protected方式繼承父類,每種繼承方式的區別如下 1 public繼承方式 2 protected繼承方式 3 private繼承方式 表1 基類成員在派生類中的的訪問屬性 基類中的成員 在公用派生類中的訪問屬性 在私有派生類中的訪問屬性...