• <table id="4yyaw"><kbd id="4yyaw"></kbd></table>
  • <td id="4yyaw"></td>
  • 發布時間:2020-09-29 09:00 原文鏈接: C++之類的繼承關系學習總結(二)

    二、類的繼承關系:

    說到這個繼承,你可以把它類比成生活當中的父親和兒子,兒子繼承的父親的長相特征。那么在我們面向對象中繼的承又是指什么呢?

    1、面向對象中的繼承是指類之間的父子關系

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

    子類就是一種特殊的父類

    子類對象可以當作父類對象使用

    子類中可以添加父類中沒有的方法和屬性

    2、繼承代碼描述形式:

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

    代碼示例:

    #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;
    }

    運行結果:

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

    3、繼承規則:

    子類就是一個特殊的父類

    子類對象可以直接初始化父類對象

    子類對象可以直接賦值給父類對象

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

    代碼示例:

    #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;
    }

    運行結果:

    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、小結:

    繼承是面向對象中類之間的一種關系

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

    子類對象可以當作父類對象使用

    子類中可以添加父類沒有的方法和屬性

    繼承是面向對象中代碼復用的重要手段(換句話說,就是不要去寫重復的代碼,提高工作效率)


  • <table id="4yyaw"><kbd id="4yyaw"></kbd></table>
  • <td id="4yyaw"></td>
  • 调性视频