C 繼承與派生(一)

2021-10-04 09:22:19 字數 2105 閱讀 4232

1.1 繼承與派生是同一過程從不同的角度看

被繼承的已有類稱為基類(或者父類)

派生出的新類稱為派生類(或子類)

直接參與派生出某類的基類稱為直接基類

基類的基類甚至更高的基類稱為間接基類

繼承的目的:實現設計與**的重用

派生的目的:當新的問題出現,原有程式無法解決(或者不能完全解決)時,需要對原有的程式進行改造。

class 派生類名:繼承方式  基類名   //單繼承只從乙個基類進行繼承

例:class derived:public base

;

class 派生類名:繼承方式1  基類名1, 繼承方式2 基類名2,...   //多繼承

注意:每乙個「繼承方式」,只用於限制對緊隨其後之基類的繼承。

例:class derived:public base1, private base2

;

派生類的構成:

3.1 不同的繼承方式的影響主要體現在:

3.2 三種繼承方式:

3.3 公有繼承(public)

繼承的訪問控制:

訪問許可權:

公有繼承的例子:

#ifndef _point_h

#define _point_h

class point

void move(float offx, float offy)

float getx() const

float gety() const

private:

float x, y;

};#endif

#include "point.h"

class rectangle :public point

float geth() const

float getw() const

private: //新增私有資料成員

float w, h;

};

#include #include "rectangle.h"

using namespace std;

int main()

3.4 私有繼承

繼承的訪問控制:

訪問許可權:

私有繼承例子:

#ifndef _point_h

#define _point_h

class point

void move(float offx, float offy)

float getx() const

float gety() const

private:

float x, y;

};#endif

#ifndef _rectangle_h

#define _rectangle_h

#include "point.h"

class rectangle :private point

void move(float offx, float offy)

float getx() const

float gety() const

float geth() const

float getw() const

private: //新增私有資料成員

float w, h;

};#endif

#include #include "rectangle.h"

using namespace std;

int main()

3.5 protected成員的特點與作用

C 繼承與派生(一)

保持已有類的特性而構造新類的過程。實現 的重用和設計的重用。比如繼承乙個抽象類是為了繼承它的設計,抽象類並沒有完全實現,但是把介面設計好了,剩下的要自己實現 當新問題出現,原有程式不能解決問題時,需要對原有程式進行改造。吸收基類成員 改造基類成員 可以重寫同名的函式,覆蓋基類中的函式,資料成員也會隱...

C 的繼承與派生(一)

1.相關概念 物件導向程式設計有4個主要特點 抽象 封裝 繼承和多型性。其中,繼承性為其最重要的特徵。在c 中,繼承 就是在乙個存在的類的基礎上建立乙個新的類。已存在的類稱為 基類 或 父類 新建立的類稱為 派生類 或 子類 派生與繼承是一對相對的詞,乙個新類從已有類那裡獲得其已有的特性,叫作繼承,...

C 繼承與派生

派生新類 吸收已有類的成員 調整已有類成員和新增新的成員 class 派生類名 繼承方式 基類名1,繼承方式 基類名2,派生類成員宣告 繼承方式有 public protected private 預設 公有繼承 基類的公有和保護乘員的訪問屬性在派生類中不變,基類的私有成員不能直接訪問 型別相容規則...