網易云課堂(Boolan)C++ 第三周筆記

1、組合與繼承

組合關系:不破壞封裝,整體類與局部類之間松耦合,彼此相對獨立。具有較好的可擴展性。支持動態組合。在運行時,整體對象可以選擇不同類型的局部對象。整體類可以對局部類進行包裝,封裝局部類的接口,提供新的接口。整體類不能自動獲得和局部類同樣的接口。創建整體類的對象時,需要創建所有局部類的對象。

繼承關系:破壞封裝,子類與父類之間緊密耦合,子類依賴于父類的實現,子類缺乏獨立性。支持擴展,但是往往以增加系統結構的復雜度為代價。不支持動態繼承。在運行時,子類無法選擇不同的父類。子類不能改變父類的接口。子類能自動繼承父類的接口。創建子類的對象時,無須創建父類的對象。

2、虛函數與多態

? ? 當對某個虛函數通過指針或引用調用時,編譯器產生的代碼直到運行時才能確定應該調用哪個版本的函數。被調用的函數是與綁定到指針或引用上的對象的動態類型相匹配的那一個。

? ? OOP的核心思想是多態性。多態性這個詞源自希臘語,其含義是“多種形式”。我們把具有繼承關系的多個類型稱為多態類型,因為我們能使用這些類型的“多種形式”而無需在意它們的差異。引用或指針的靜態類型與動態類型不同這一事實正是C++語言支持多態性的根本所在。

? ? 當我們使用基類的引用或指針調用基類中定義的一個函數時,我們并不知道該函數真正作用的對象是什么類型,因為它可能是一個基類的對象也可能是一個派生類的對象。如果該函數是虛函數,則直到運行時才會決定到底執行哪個版本,判斷的依據是引用或指針所綁定的對象的真實類型。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 面向對象主要針對面向過程。 面向過程的基本單元是函數。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,088評論 0 4
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,759評論 18 399
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,141評論 0 62
  • 7月9日星期日(陰)親子日記第36天 今天星期日我在家休息,兒子今天不太精神用體溫表量了一下有點發燒。去衛生室拿...
    四年級五班張家豪媽媽閱讀 247評論 0 3
  • 你用歡笑來掩飾你的悲傷, 夜未央,你早已淚兩行; 人群的喧鬧也遮擋不住你的孤獨, 來來回回走那些沒有盡頭的路。 我...
    星漫閱讀 349評論 1 2