iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0
自我挑戰組

C++入門即放棄系列 第 22

[DAY22]學會了如何共享!

  • 分享至 

  • xImage
  •  

繼承是甚麼?

📌 像小孩繼承父母的特徵

  • 在程式中,一個類別可以「繼承」另一個類別的屬性與方法
  • 好處是:避免重複程式碼,提升程式的可讀性與維護性
#include <iostream>
using namespace std;
class Character 
{
	public:
	    string name;
	    int hp;
	    void showStatus() 
	    {
	        cout << name << "血量: " << hp << endl;
	    }
};
class Warrior : public Character 
{
	public:
	    void attack() 
	    {
	        cout << name << "攻擊!" << endl;
	    }
};
int main() 
{
    Warrior w;
    w.name = "小A";
    w.hp = 100;
    w.showStatus();
    w.attack();
    return 0;
}

多型是甚麼?

📌 同一個介面,可以有不同的實作方式

  • 父類別提供一個「虛擬函式 (virtual function)」,子類別去改寫它
  • 能在程式執行時,決定要呼叫哪個版本
#include <iostream>
using namespace std;
class Character 
{
	public:
	    virtual void attack() 
	    { 
	        cout << "角色->攻擊!" << endl;
	    }
};

class Warrior : public Character 
{
	public:
	    void attack() override 
	    {
	        cout << "勇者->揮劍!" << endl;
	    }
};

class Mage : public Character 
{
	public:
	    void attack() override 
	    {
	        cout << "法師->火球術!" << endl;
	    }
};

int main() 
{
    Character *c1 = new Warrior();
    Character *c2 = new Mage();
    c1->attack(); 
    c2->attack(); 
    delete c1;
    delete c2;
    return 0;
}

📌 override → 標明為重寫函數

結論

📌 繼承 → 讓子類別共享父類別的屬性與方法

避免重複程式碼

📌 多型 → 讓不同的子類別能各自定義行為

即使它們共享同一個介面


上一篇
[DAY21]小赤的程式冒險(終)
下一篇
[DAY23]真真假假?
系列文
C++入門即放棄23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言