一、繼承
繼承的定義
繼承是物件導向的核心特徵之一,也是一種復用已有類的機制。在已有類的的基礎上繼承得到新型別,這個型別自動擁有已有類的特徵,並可以修改繼承得到的特性或者增加自己的新特性。在c++中,被繼承的以有類稱為基類,繼承得到的新類成為派生類。派生類可以在被繼承,這樣構成的層次結構稱為繼承層次。
繼承的語法結構
class 派生類名名字:[訪問限定符]基類名字
;
舉例
//這是乙個簡單的學生類
class student;
//這是乙個研究生類,因為研究生要處理更多的資訊,所以資料比student類裡的資料要多
class grad_student;
//因為在grad_student類中包含了student類的所有成員,所以利用繼承
class grad_student:public student //grad_student繼承student類
;
在這個例子中grad_student繼承了student類,也就是說student類是基類,grad_student類是派生類。
派生類成員的訪問控制
訪問控制共有三種
public:公有繼承
private:私有繼承
protected:保護繼承
注意一點:無論以何種方式繼承基類,派生類都不能使用基類裡面的私有成員。
公有繼承、私有繼承和保護繼承的區別
public繼承方式
基類中所有public成員在派生類中為public屬性;
基類中所有protected成員在派生類中為protected屬性;
基類中所有private成員在派生類中不可訪問。
protected繼承方式
基類中的所有public成員在派生類中為protected屬性;
基類中的所有protected成員在派生類中為protected屬性;
基類中的所有private成員在派生類中仍然不可訪問。
private繼承方式
基類中的所有public成員在派生類中均為private屬性;
基類中的所有protected成員在派生類中均為private屬性;
基類中的所有private成員在派生類中均不可訪問。
基類中的成員
在公用派生類中的訪問屬性
在私有派生類中的訪問屬性
在保護派生類中的訪問屬性
私有成員
不可訪問
不可訪問
不可訪問
公用成員
公用私有
保護保護成員
保護私有
保護派生類和基類的不同
在派生類中修改基類的方式有如下兩種
1、覆蓋或隱藏基類的操作:重新定義基類介面中已經存在的操作,從而改變繼承到的行為,使得派生類物件在接受到同樣的訊息時其行為不同於基類物件。
二、虛函式與多型性
在c++語言中,基類將兩種成員函式區分開來:一種是基類希望派生類覆蓋的函式,另一種是基類希望派生類直接繼承而不要改變的函式。對於前者將其定義為虛函式。
注意一點:析構函式可以是虛函式,建構函式不可以是虛函式。
宣告虛函式語法形式:
virtual 返回型別 成員函式表(參數列)
虛函式在基類中用virtual關鍵字宣告,virtual只能在類內的成員函式宣告之前,不能用於類外的函式定義。
舉例:
class employee //基類中宣告的虛函式
};//下面的派生類中的salary()都是虛函式
class manager:public employee
//};
class programmer:public employee
//};
class parttime:public employee
//};
//payroll()函式
void payroll(employee& re)
int mian()
manager albus;
payroll(albus); //根據實際型別呼叫manager::salary()
programmer ron;
payroll(ron); //根據實際型別呼叫programmer::salary()
此例中,基類中的salary宣告為虛函式。同樣是通過基類引用傳送相同的salary()訊息,卻產生了不同的效果,即多型性。多型性可以為程式帶來更大的靈活性和可擴充套件性。
自己的體會:
自己在學習這兩章內容時,真心覺得很難,課本內容非常的多,而且抽象且不好理解。經過一段時間的練習,現在自己多這兩部分有了乙個新的認識。繼承和多型時c++面向程式設計的重要部分,所以在以後還是要多看課本,多加練習。
物件導向程式設計(封裝 繼承 多型)
1 保證 資料的安全性 2 遮蔽 複雜性 3 封裝型別 普通 封裝成方法 方法都封裝在乙個類中。using system namespace lesson01 public void close class mainclass 1 被繼承類 父類 基類 繼承類 子類 派生類 2 子類可以擁有父類的全...
C 物件導向(封裝,繼承,多型)
c 封裝繼承多型總結 物件導向的三個基本特徵 物件導向的三個基本特徵是 封裝 繼承 多型。其中,封裝可以隱藏實現細節,使得 模組化 繼承可以擴充套件已存在的 模組 類 它們的目的都是為了 重用。而多型則是為了實現另乙個目的 介面重用!封裝 什麼是封裝?封裝可以隱藏實現細節,使得 模組化 封裝是把過程...
C 物件導向繼承多型練習
總時間限制 1000ms 記憶體限制 65536kb 在此處補充你的 描述 程式填空產生指定輸出 include using namespace std class b void fun b int n int main 輸入無輸出 d fun b fun d fun nbval 2 nbval 2...