物件導向程式設計oop(object-oriented programming)的關鍵思想是多型性。c++中多型性用於通過繼承而相關聯的型別的引用或指標。
首先看看基本的基類和派生類,以c++ primer中乙個程式段為例:
在基類item_base中我們可以看到,這裡面存在public、protected和private三種訪問控制標號。public成員可以被一切使用者**所訪問;protected成員可以由基類及派生類訪問,但不能由普通使用者**訪問;private成員可以由基類和友元訪問;其實派生類對基類成員的訪問是由基類中的成員訪問控制級別和派生類派生列表中使用的訪問標號共同控制的,其中的派生類列表時如下形式的:
calss classname : access-label base-calss-name.可以參見圖中的bulk_item繼承item_base的寫法。其中的access-label 有public、protected和private三種。
不管上面哪種繼承,如果是基類中的private,派生類是不能訪問的。對於積累中的public成員和protected成員,當public繼承時,性質不變,當protected繼承時,基類中的public和protected成員都會變為protected的,當private繼承時,基類的所有成員在派生類中都是private成員。總之一句話,派生類可以對所繼承的基類成員的訪問控制做進一步約束,但是不能放鬆。同時,當派生類對基類成員整體做進一步約束的時候,也可以對個別基類成員的訪問許可權進行恢復,但是最多不能比基類中的許可權更寬鬆。如上面的bulk_item1以private形式繼承item_base類,則原基類中的成員在bulk_item1中都是private的,此時想要恢復基類中的isbn訪問許可權,但是因為isbn在基類中的訪問許可權為protected的,因此最多能恢復到protected的,而不能更寬鬆到public的。
C 隨筆 類繼承 派生類與基類
1 派生類會繼承基類的資料成員和部分方法成員,並將其加入派生類的相應區域 public private protected,取決於才去的繼承方式 之所以是部分方法成員,是因為有一些特殊的函式不會被繼承 建構函式 析構函式 賦值運算子函式等。public private protected區域的劃分只...
C (day 1) 繼承 基類與派生類
4.派生類的構造 5.型別相容性 從乙個類派生出另乙個類,原先的類稱為基類,繼承類稱為派生類。派生類的定義方式 class 派生類類名 訪問許可權修飾符 基類類名1 訪問許可權修飾符 基類類名2,例子 class base1 class base2 class derived public base...
繼承 基類和派生類
說明派生類的生成和使用 include using namespace std class test1 基類 test1 int a x a void disp class test2 public test1 派生類 test2 int a,int b test1 a void disp intm...