C++ 快速導覽 - 類別 繼承

繼承 (inheritance) 為物件導向程式設計 (object-oriented programming) 的特性之一,衍生類別 (derived class) 可以承接基礎類別 (base class) 的 publicprotected 成員 (member) ,使之具有共通的 publicprotected 成員。



衍生類別也常被稱為子類別 (subclass) ,基礎類別也常被稱為父類別 (superclass) 。


「繼承」是物件導向程式設計中一個重要也是核心的觀念,動詞原文為 inherit 。雖然 inherit 在英文的意思泛指從什麼得到什麼,用作中文「繼承」說得通,也能用作「遺傳」。然而中文的「繼承」隱含某物不再,另物將起的意思,譬如「我繼承某某的精神」,雖然某某不見得已死,未來將要付出努力的卻是我而非某某。因而這裡的意思中文用「遺傳」比較恰當,子代會從親代遺傳某些生物特性,子代與親代也會並存一段時間,這就沒有某物不再的意含了。然而這裡我們仍沿用程式設計常用的「繼承」一詞,但仍提出意見以免讀者混淆。


舉例如下
#include <iostream>

class Demo {
public:
    Demo() {
        a = 10;
        b = 33;
    }

protected:
    int a;
    int b;
};

class Demo2: public Demo {
public:
    int do_something() {
        return a + b;
    }   
};

int main(void) {
    Demo2 d;
    std::cout << d.do_something() << std::endl;

    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:classdemo19.cpp
    功能:示範 C++ 程式
    作者:張凱慶
    時間:西元 2013 年 1 月 */


Demo2 繼承自 Demo ,繼承的寫法是在衍生類別後面接冒號,然後存取標籤 (access label) 加基礎類別
class Demo2: public Demo {
public:
    int do_something() {
        return a + b;
    }   
};


編譯執行結果如下



中英文術語對照
繼承inheritance
物件導向程式設計object-oriented programming
衍生類別derived class
基礎類別base class
成員member
存取標籤access label


您可以繼續參考
類別


相關目錄
回 C++ 快速導覽
回 C++ 教材
回首頁


參考資料
C++ reference
cplusplus.com
Cprogramming.com C++ Tutorial

C++ Primer, Fourth Edition, Stanley B. Lippman...

沒有留言: