溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++類的繼承關(guān)系舉例分析

發(fā)布時(shí)間:2021-11-24 11:33:27 來(lái)源:億速云 閱讀:206 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“C++類的繼承關(guān)系舉例分析”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“C++類的繼承關(guān)系舉例分析”吧!

一、類的組合關(guān)系:

1、整體與部分的關(guān)系

組合關(guān)系,從字面上來(lái)理解的話,就是誰(shuí)也離不開(kāi)誰(shuí),必須相互組合在一起才行,例如我們生活當(dāng)中的電腦組成:

C++類的繼承關(guān)系舉例分析  

代碼示例:

#include <iostream>
#include <string>

using namespace std;

class Memory
{
public:
    Memory()
    {
        cout << "Memory()" << endl;
    }
    ~Memory()
    {
        cout << "~Memory()" << endl;
    }
};

class Disk
{
public:
    Disk()
    {
        cout << "Disk()" << endl;
    }
    ~Disk()
    {
        cout << "~Disk()" << endl;
    }   
};

class CPU
{
public:
    CPU()
    {
        cout << "CPU()" << endl;
    }
    ~CPU()
    {
        cout << "~CPU()" << endl;
    }    
};

class MainBoard
{
public:
    MainBoard()
    {
        cout << "MainBoard()" << endl;
    }
    ~MainBoard()
    {
        cout << "~MainBoard()" << endl;
    }    
};

class Computer // 這個(gè)地方不僅描述了事物,也還描述了關(guān)系,里面只要有一個(gè)類不存在,電腦這個(gè)類也就不復(fù)存在了。
{
    Memory mMem;
    Disk mDisk;
    CPU mCPU;
    MainBoard mMainBoard;
public:
    Computer()// 這里會(huì)先調(diào)用類成員的構(gòu)造函數(shù),之后調(diào)用電腦類的構(gòu)造函數(shù),這說(shuō)明了組合關(guān)系;電腦類對(duì)象的創(chuàng)建,要依賴上述四個(gè)類的對(duì)象的創(chuàng)建。
    {
        cout << "Computer()" << endl;
    }
    void power()
    {
        cout << "power()" << endl;
    }
    void reset()
    {
        cout << "reset()" << endl;
    }
    ~Computer()// 電腦類析構(gòu)的時(shí)候,也會(huì)將對(duì)應(yīng)的類成員析構(gòu),這說(shuō)明同生死;說(shuō)明了電腦類對(duì)象的存在完全依賴于類成員對(duì)象的存在。
     {
    {
        cout << "~Computer()" << endl;
    }
};

int main()
{   
    Computer c;
    
    return 0;
}

 

運(yùn)行結(jié)果:

root@txp-virtual-machine:/home/txp# ./a.out
Memory()
Disk()
CPU()
MainBoard()
Computer()
~Computer()
~MainBoard()
~CPU()
~Disk()
~Memory()

 

2、組合關(guān)系的特點(diǎn):

  • 將其它類的對(duì)象作為當(dāng)前類的成員使用

  • 當(dāng)前類的對(duì)象與成員對(duì)象的生命周期相同

  • 成員對(duì)象在用法上與普通對(duì)象完全一致

二、類的繼承關(guān)系:

說(shuō)到這個(gè)繼承,你可以把它類比成生活當(dāng)中的父親和兒子,兒子繼承的父親的長(zhǎng)相特征。那么在我們面向?qū)ο笾欣^的承又是指什么呢?

1、面向?qū)ο笾械睦^承是指類之間的父子關(guān)系

  • 子類擁有父類的所有屬性和行為

  • 子類就是一種特殊的父類

  • 子類對(duì)象可以當(dāng)作父類對(duì)象使用

  • 子類中可以添加父類中沒(méi)有的方法和屬性

2、繼承代碼描述形式:

class Parent
{
    int mv;
  public:
    void method()
    {
    
    }
};
class Child : public Parent//描述繼承關(guān)系
{

};
 

代碼示例:

#include <iostream>
#include <string>

using namespace std;

class Parent
{
    int mv;
public:
    Parent()
    {
        cout << "Parent()" << endl;
        mv = 100;
    }
    void method()
    {
        cout << "mv = " << mv << endl;
    }
};

class Child : public Parent
{
public:
    void hello()
    {
        cout << "I'm Child calss!" << endl;
    }
};

int main()
{   
    Child c;
    
    c.hello();
    c.method();
    
    return 0;
}

 

運(yùn)行結(jié)果:

root@txp-virtual-machine:/home/txp# ./a.out
Parent()
I'm Child class!
mv= 10

 

3、繼承規(guī)則:

  • 子類就是一個(gè)特殊的父類

  • 子類對(duì)象可以直接初始化父類對(duì)象

  • 子類對(duì)象可以直接賦值給父類對(duì)象

說(shuō)明:繼承是c++中代碼復(fù)用的重要手段。通過(guò)繼承,可以獲得父類的所有功能,并且可以在子類中重寫(xiě)已有的功能,或者添加新功能。

代碼示例:

#include <iostream>
#include <string>

using namespace std;

class Memory
{
public:
    Memory()
    {
        cout << "Memory()" << endl;
    }
    ~Memory()
    {
        cout << "~Memory()" << endl;
    }
};

class Disk
{
public:
    Disk()
    {
        cout << "Disk()" << endl;
    }
    ~Disk()
    {
        cout << "~Disk()" << endl;
    }   
};

class CPU
{
public:
    CPU()
    {
        cout << "CPU()" << endl;
    }
    ~CPU()
    {
        cout << "~CPU()" << endl;
    }    
};

class MainBoard
{
public:
    MainBoard()
    {
        cout << "MainBoard()" << endl;
    }
    ~MainBoard()
    {
        cout << "~MainBoard()" << endl;
    }    
};

class Computer
{
    Memory mMem;
    Disk mDisk;
    CPU mCPU;
    MainBoard mMainBoard;
public:
    Computer()
    {
        cout << "Computer()" << endl;
    }
    void power()
    {
        cout << "power()" << endl;
    }
    void reset()
    {
        cout << "reset()" << endl;
    }
    ~Computer()
    {
        cout << "~Computer()" << endl;
    }
};

class HPBook : public Computer
{
    string mOS;
public:
    HPBook()
    {
        mOS = "Windows 8";
    }
    void install(string os)
    {
        mOS = os;
    }
    void OS()
    {
        cout << mOS << endl;
    }
};

class MacBook : public Computer
{
public:
    void OS()
    {
        cout << "Mac OS" << endl;
    }
};

int main()
{   
    HPBook hp;
    
    hp.power();
    hp.install("Ubuntu 16.04 LTS");
    hp.OS();
    
    cout << endl;
    
    MacBook mac;
    
    mac.OS();
    
    return 0;
}

 

運(yùn)行結(jié)果:

root@txp-virtual-machine:/home/txp# ./a.out
Memory()
Disk()
CPU()
MainBoard()
Computer()
power()
Ubuntu 16.04 LTS

Memory()
Disk()
CPU()
MainBoard()
Computer()
Mac OS
~Computer()
~MainBoard()
~CPU()
~Disk()
~Memory()
~Computer()
~MainBoard()
~CPU()
~Disk()
~Memory()

4、小結(jié):

  • 繼承是面向?qū)ο笾蓄愔g的一種關(guān)系

  • 子類擁有父類的所有屬性和行為

  • 子類對(duì)象可以當(dāng)作父類對(duì)象使用

  • 子類中可以添加父類沒(méi)有的方法和屬性

  • 繼承是面向?qū)ο笾写a復(fù)用的重要手段(換句話說(shuō),就是不要去寫(xiě)重復(fù)的代碼,提高工作效率)

感謝各位的閱讀,以上就是“C++類的繼承關(guān)系舉例分析”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)C++類的繼承關(guān)系舉例分析這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI