C 物件導向程式設計 繼承與多型知識總結

2021-10-01 01:35:55 字數 2407 閱讀 6748

一、繼承

繼承的定義

繼承是物件導向的核心特徵之一,也是一種復用已有類的機制。在已有類的的基礎上繼承得到新型別,這個型別自動擁有已有類的特徵,並可以修改繼承得到的特性或者增加自己的新特性。在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...