iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0

今天來寫類別的繼承~


繼承的基本概念

繼承(Inheritance)是物件導向程式設計的一個重要特性,它允許一個類別從另一個類別繼承屬性和方法。繼承的核心思想是重用已存在的程式碼,讓新類別(子類別)基於已有類別(父類別)進行擴展,而不需要重新撰寫父類別中的程式碼。繼承使得程式設計更加高效、靈活,並促進了程式碼的重用性。

在C++中,繼承是透過關鍵字: 來表示的。當一個類別繼承自另一個類別時,子類別會擁有父類別的所有屬性和方法,並且可以選擇性地覆寫父類別的某些行為,或添加新的功能。

繼承的種類

C++中支援多種繼承形式,主要分為三種:公有繼承(Public Inheritance)、私有繼承(Private Inheritance)、以及保護繼承(Protected Inheritance)。
這些不同形式的繼承控制了父類別成員在子類別中的可見性。

  1. 公有繼承(Public Inheritance):
    子類別能夠繼承並公開使用父類別的公有成員。
    父類別的公有成員仍然是子類別的公有成員,而保護成員則是保護成員。

  2. 私有繼承(Private Inheritance):
    父類別的公有和保護成員在子類別中變成私有成員。
    這種繼承形式主要用於當子類別只想使用父類別的實現細節,但不希望公開這些細節。

  3. 保護繼承(Protected Inheritance):
    父類別的公有和保護成員在子類別中變為保護成員。
    這使得子類別可以繼續訪問這些成員,但外部無法直接使用。

繼承的優點

  1. 程式碼重用性:子類別可以直接使用父類別的屬性和方法,避免重複撰寫相同的程式碼。這使得開發更加高效,程式碼更加簡潔。

  2. 可擴展性:通過繼承,子類別可以在父類別的基礎上進行擴展,添加新的屬性或方法,實現更多的功能。

  3. 一致性與可維護性:當父類別中的某些行為或屬性需要修改時,修改父類別的程式碼會自動影響所有繼承該類別的子類別,這使得程式的維護更為方便。

繼承中的覆寫與多態性

在 C++ 中,子類別可以選擇覆寫(Override)父類別中的某些方法,以實現特定的行為。這是透過在子類別中重新定義父類別的成員函數來實現的。

此外,繼承與多態性密切相關。透過多態性,我們可以使用父類別的指標或參考來操作子類別物件,這使得程式更加靈活。例如,可以透過父類別的指標來指向不同的子類別物件,並且根據實際物件的類型執行對應的覆寫函數。

繼承中的一些注意事項

  1. 多重繼承:C++ 支援多重繼承,這意味著一個類別可以同時繼承多個父類別。然而,多重繼承可能會引發「菱形繼承」問題,即子類別從多個父類別繼承同一個基類的成員,導致不必要的重複。因此,使用多重繼承時需要特別注意,避免引發複雜的繼承關係。

  2. 虛擬繼承:為了解決多重繼承中的菱形繼承問題,C++ 提供了虛擬繼承(Virtual Inheritance)。虛擬繼承允許一個基類只被子類別繼承一次,避免重複繼承問題。

  3. 繼承中的建構元與解構元:當子類別物件被創建時,會首先呼叫父類別的建構元來初始化父類別的成員,然後再執行子類別的建構元。同樣地,當物件被銷毀時,會首先呼叫子類別的解構元,再呼叫父類別的解構元。這樣的順序確保了父類別與子類別物件的正確構建與銷毀。

C++ 中的繼承提供了強大的物件導向程式設計功能,允許程式設計師基於已有的類別進行擴展,並透過程式碼重用來提高開發效率。通過繼承,我們可以構建更具結構性與模組化的程式碼,從而使程式的設計更加靈活和可擴展。


快結束了!各位加油~~


上一篇
Day26 運算子的多載
下一篇
Day28 實作-貪食蛇小遊戲(上)
系列文
用30天學習C++30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言