public、protected及private繼承區別

在繼承時採公開(public)繼承的方式來繼承一個類別時,父類別與子類別爲"is-a"的關係,子類別繼承父類別的公開(public)介面及受保護(protected)的成員,子類別是父類別的細化型態。 

保護(protected)繼承能夠改變繼承下來的基底類別成員權限,保護的意思就是讓這些成員繼承下來以後,保護它們僅能在類別與衍生類別中使用,保護繼承的語法以下所示: 
web

class B : protected A { 
    // 實做 
};


保護繼承時使用protected來繼承基底類別,繼承下來的成員在衍生類別中的權限變爲以下:
ide

基底類別 衍生類別
private 不繼承
protected protected
public protected


簡單的說,原來的權限在protected如下的保留其原來權限,而在protected以上的就降爲protected,子類別protected繼承的目的在只但願保留父類別中已實做的公開成員與受保護的成員爲己用或接下來的衍生類別使用,並提供本身的公開介面。

您也能夠在繼承基底類別以後,將它全部的成員一概改成私用(private),使用私用(private)繼承能夠達到這個目的,其語法以下: 
函數

class B : private A { 
    // 實做 
}; 



基底類別中的成員在被繼承以後,其權限以下所示: 
spa

基底類別 衍生類別
private 不繼承
protected private
public private

 

而public繼承:orm

基底類別中的成員在被繼承以後,其權限以下所示: 
對象

基底類別 衍生類別
private 不繼承
protected protected
public public

 

第一:private, public, protected 訪問標號的訪問範圍。繼承

private:只能由1.該類中的函數、2.其友元函數訪問。
不能被任何其餘訪問,該類的對象也不能訪問

protected:能夠被1.該類中的函數、2.子類的函數、以及3.其友元函數訪問。
但不能被該類的對象訪問

public:能夠被1.該類中的函數、2.子類的函數、3.其友元函數訪問,也能夠由4.該類的對象訪問。
 
注:友元函數包括3種:設爲友元的普通的非成員函數;設爲友元的其餘類的成員函數;設爲友元類中的全部成員函數。

第二:類的繼承後方法屬性變化。
private 屬性不可以被繼承。
使用private繼承,    父類的protected和public屬性在子類中變爲private;
使用protected繼承,父類的protected和public屬性在子類中變爲protected;
使用public繼承,     父類的protected和public屬性不發生改變; 
 
以下所示: 
                                 public:            protected:       private:
public繼承             public             protected        不可用 
protected繼承       protected       protected        不可用 
private繼承            private           private             不可用 

protected繼承和private繼承能下降訪問權限。
相關文章
相關標籤/搜索