private繼承與public繼承

2021-07-13 17:19:23 字數 998 閱讀 7357

private:

能夠訪問:1.該類中的函式;2.友元函式。

不能訪問:1.public繼承的子類和private繼承子類;2.該類的物件。

protected:

能夠訪問:1.該類中的函式;2.public繼承的子類和private繼承子類;3.友元函式。

不能訪問:1.該類的物件。

public:

能夠訪問:1.該類中的函式;2.public繼承的子類和private繼承子類;3.友元函式;4.該類的物件。

注:友元函式包括3種:設為友元的普通的非成員函式;設為友元的其他類的成員函式;設為友元類中的所有成員函式。

使用private繼承,父類的protected和public屬性在子類中變為private;

使用protected繼承,父類的protected和public屬性在子類中變為protected;

使用public繼承, 父類的protected和public屬性不發生改變;

c++將public繼承視為is-a關係。private繼承意味著implemented-in-terms-of(根據某物實現出)。private繼承意味著只有實現部分被繼承,介面部分被略去。意思是子類採用了父類已經備妥的特性,但是子類和父類之間不會產生任何觀念上的聯絡。private繼承在軟體設計層面上沒有意義,其意義只在於軟體實現層面。

private繼承:

1)編譯器不會自動將乙個子類物件轉換為乙個父類物件,而public繼承會;

2)子類中由父類繼承而來的成員(protected和public)都變為private。

implemented-in-terms-of也可以由復合實現。在應用域,復合意味著has-a;在實現域,復合意味著is-implemented-in-terms-of。盡可能使用復合實現這種關係,必要時(涉及protected成員或virtual函式時)才使用private繼承

關於private和繼承

被private修飾的方法和屬性,只能被本類呼叫,包括子類的其他類不可以直接呼叫這個被private修飾的方法和屬性。public class testprivateandbean class newone extends testprivateandbean 當父類中的屬性或方法被修飾為priva...

關於C 的private繼承問題

c 有三種繼承方式 公有繼承,私有繼承,保護繼承 這裡只對其中私有繼承做個知識筆記,以防忘記。private 關鍵字意味著除了該型別的建立者和類的內部成員函式之外,物件及子類都不能訪問。這裡注意,即使該類的物件都不能直接訪問哦,只有通過物件的內部成員函式才可以訪問 採用公用繼承方式時,基類的公用成員...

private方法不能繼承,重寫

public class father void f2 public static void main string args class son extends father protected void f2 輸出 father f1 son f2 解析 父類引用指向子類物件,重寫 f1,f2方...