繼承是物件導向程式設計中軟體重用的關鍵技術。繼承機制使用已定義的類作為基礎建立新的類定義,新的類是原有類的資料及操作與新類所增加的資料及操作的組合。新的類把原有的類作為基類引用,而不需要修改原有類的定義。新的類作為派生類引用。這種可擴充、可重用技術大大降低了大型軟體的開發難度。
c++中描述類繼承關係的語句格式為
class 派生類名 : 基類名錶
資料成員和成員函式說明
其中,基類名錶的語句格式如下
訪問控制 基類名1,訪問控制 基類名2,。。。,訪問控制 基類名n
用於表示當前定義的派生類的各個基類。如果乙個基類名錶中只有乙個基類,則表示定義的派生類只有乙個基類,稱為單繼承;如果乙個基類名錶中有多個基類,則稱為多繼承
訪問控制是表示繼承許可權的關鍵字,稱為訪問描述符。可以是
public 公有繼承
private 私有繼承
protected 保護繼承
如果省略訪問描述符,則c++認為是私有繼承,其中,公有繼承是最為常用的繼承方式
乙個派生類公有繼承乙個基類時,基類中所有公有成員(由public定義的資料成員或成員函式)成為派生類的共有成員,基類中所有的保護成員成為派生類的保護成員。
例程class a
public :
void get_xy()
cout<<"enter two numbers of x,y";
cin>>x>>y;
void put_xy()
cout<<"x="int x,y;
class b:public a
public :
int get_s()
void make_s()
protected:
int s;
基類的初始化
建構函式名(變元表):基類(變元表),資料成員1(變元表),。。。,資料成員n(變元表)
例程class point
public:
point (double t1,double t2)
x= t1;
y=t2;
void outpoint()
void outcircle()
重名成員
c++允許派生類的成員與基類成員重名。派生類中訪問重名成員時,遮蔽基類的同名成員,如果要在派生類中使用基類的同名成員,可以顯式地使用作用域符指定,格式如下:
類名::成員
派生類中訪問靜態成員
如果在基類中定義了靜態成員,這些靜態成員將在整個類體系中被共享,根據靜態成員自身的訪問特性和派生類的繼承方式,在類層次體系中具有不同的訪問性質
例程#include
using namespace std;
class b
public :
static void add()
static int i;
void out()
{cout<<"static i = "class d:private b
public :
void f();
void d::f()
i=5;
add();
b::i++;
b::add();
int main()
b x;
d y;
x.add();
x.out();
y.f();
cout<<"static i = "static i=1
static i=8
static i=8
C 繼承總結
一 基類和派生類 類繼承關係的語法形式 class 派生類名 基類名錶 資料成員和成員函式說明 其中,基類名錶 的語句格式如下 訪問控制 基類名1,訪問控制 基類名2,訪問控制 是表示繼承許可權的關鍵字,稱為訪問描述符。可以是 如果省略訪問描述符,則c 認為是私有繼承。如果用關鍵字struct 而不...
C 繼承總結
繼承概念 在原有的類不變的基礎之上,新增一些函式,對功能進行拓展 繼承特點 是物件導向程式設計的的層次結構 是實現由簡單到複雜的認知過程 基類 被繼承的類 派生類 在繼承之後產生的新類 例子 手機系統會不斷更新,然而,我們的手機更新之後的功能只是對原來的功能進行優化和新增 繼承格式 派生類名 繼承許...
C 繼承總結
繼承 1 三種類成員訪問限定符繼承 2 公有繼承 保護繼承 私有繼承 基類的私有成員在派生類是無法被訪問的,如果乙個基類不想讓基類物件之間訪問自己的成員,但是需要在派生類中訪問,那麼可以將該成員設定為 protected 保護類 公有繼承是乙個介面繼承,所有基類可用的成員對子類也可用,每乙個派生類都...