C++關鍵字protected


我們已經接觸了C++的兩個關鍵字:public和private。public是公開的,而private是私有的。

在C++的類中,如果一個屬性或方法被定義為public,那么這個屬性或者方法可以被所有的類訪問。如果一個屬性或方法被定義為private,那么這個屬性或者方法只能夠被自己這個類訪問,甚至子類也無法訪問。

那么問題來了,子類如果每次訪問父類的屬性都要使用getter或setter方法,那么會很不方便。而且如果父類不提供getter和setter方法的話,那就沒有辦法訪問了。如果我們想子類直接訪問父類的屬性或者方法,那么可以使用protected關鍵字。

它的使用方法和其他兩個關鍵字一樣:

class ClassName {
public:
    //public attributes or methods
protected:
    //protected attributes or methods
private:
    //private attributes or methods
};

這樣一來,子類就可以直接訪問父類的屬性或方法而其他與父類無關的類無法直接訪問。

所以我們也可以得知訪問權限級別的順序:public > protected > private

在繼承中的public、private和protected

 

父類成員訪問級別

 

public

proteced

private

public

public

proteced

private

proteced

proteced

proteced

private

private

private

private

Private

也就是說,當繼承時,我們的格式是:

class ClassA: public ClassB {
    //...
};

那么ClassA中的所有屬性和方法的訪問權限和父類相同。

如果我們在繼承時使用了protected:

class ClassA: protected ClassB {
    //...
};

那么ClassB中的public屬性或者方法的訪問權限就會變為protected,而其他的權限不變。

如果我們在繼承時使用了private:

class ClassA: private ClassB { //... };

那么ClassB中的所有屬性或者方法的訪問權限就會變為private。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM