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 預設 公有繼承 基類的公有和保護乘員的訪問屬性在派生類中不變,基類的私有成員不能直接訪問 型別相容規則...