繼承的直觀理解
繼承:類與類之間的「是一種」關係。如兒子繼承父親財產,派生類獲得基類的成員變數與成員函數,並可新增自己的成員增強功能。
核心術語
| 術語 | 別名 | 角色 |
| 基類 | 父類/超類 | 被繼承者,提供共同特徵 |
| 派生類 | 子類 | 繼承者,擁有基類特徵+自身特徵 |
兩大典型應用場景
- 擴展現有類:新類與現有類相似,只需增加少量成員 → 繼承避免重寫
- 提取共性建基類:多個類有大量相似成員 → 提取共同部分為基類,派生各具體類
語法:派生類聲明
class 派生類名 : [繼承方式] 基類名 {
// 派生類新增成員
};
class Student : public People:Student 派生自 People,public 繼承
- 繼承方式可選,默認
private
完整入門範例
#include <iostream>
using namespace std;
// 基類:人
class People {
public:
void setname(char* name) { m_name = name; }
void setage(int age) { m_age = age; }
char* getname() { return m_name; }
int getage() { return m_age; }
private:
char* m_name;
int m_age;
};
// 派生類:學生
class Student : public People {
public:
void setscore(float score) { m_score = score; }
float getscore() { return m_score; }
private:
float m_score;
};
int main() {
Student stu;
stu.setname("小明");
stu.setage(16);
stu.setscore(95.5f);
cout << stu.getname() << "的年齡是 " << stu.getage()
<< ",成績是 " << stu.getscore() << endl;
}
運行結果
小明的年齡是 16,成績是 95.5
關鍵觀察
Student 未定義 setname/setage/getname/getage,但可直接調用 → 繼承獲得
m_name/m_age 為 private,派生類不可直接訪問 → 必須通過基類 public 介面
Student 新增 m_score/setscore/getscore → 擴展功能
繼承方式預告
public、protected、private 三種繼承方式決定基類成員在派生類中的訪問權限,詳細規則見下節《繼承權限與繼承方式》。
總結
繼承是面向對象復用的核心機制:基類封裝共性,派生類擴展個性。語法簡單(冒號+繼承方式+基類名),威力巨大。掌握「是一種」語義判斷、public/private 邊界設計、共性提取時機,是物件導向設計的入門必修課。
- 上一篇文章: C++ 繼承權限與繼承方式詳解:public/protected/private 三種模式的訪問控制邏輯
- 下一篇文章: C++ 引用核心概念與基本使用:別名機制、參數傳遞與返回值優化完全指南
Copyright ©
程式碼之家 All Rights Reserved