繼承與多型

2022-03-15 02:28:27 字數 1405 閱讀 6937

判斷:第二個執行錯。

第四個編譯錯誤。

結果:第

二、四個編譯錯誤。

第五個執行錯誤。

原因:m=d;     //編譯正確,因為子類物件可以直接賦給基類變數。

d=m;     //編譯錯誤,基類物件要賦給子類物件變數,必須執行型別轉換(子類物件變數=(子類名)基類物件名;)

d=(dog)m;   //編譯正確,基類物件要賦給子類物件變數,必須執行型別轉換

d=c;      //編譯錯誤,不同子類之間不能複製

c=(cat)m;   //執行錯誤,m已經轉換成dog, dog和cat子類之間不能轉換

1.執行結果:

2.原因:

父類物件可以訪問子類的成員,當然只限於」覆蓋」發生時,呼叫的時候,物件是子類的,就呼叫子類的方法,物件是父類的,就呼叫父類的方法。當然還有如下特性:

1.當子類與父類擁有一樣的方法,並且讓乙個父類變數引用乙個子類物件時,到底呼叫哪個方法,由物件自己的「真實」型別所決定,這就是說:物件是子型別的,它就呼叫子型別的方法,是父型別的,它就呼叫父型別的方法。這個特性實際上就是物件導向「多型」特性的具體表現。

2.如果子類與父類有相同的字段,則子類中的字段會代替或隱藏父類的字段,子類方法中訪問的是子類中的字段(而不是父類中的字段)。如果子類方法確實想訪問父類中被隱藏的同名字段,可以用super關鍵字來訪問它。

3.如果子類被當作父類使用,則通過子類訪問的字段是父類的.

3.修改**並測試:

則結果為:

說明新加的後邊的輸出結果是呼叫的子類的方法。

繼承與多型

繼承 繼承是c 語言支援 重用及多型的重要機制。通過繼承,可以繼承可以在現有類的基礎上派生出新類,新類將共享現有類的成員,並且還可以新增新的成員。c 語言中,重用主要表現為可以使用現成的類 如.net框架類庫中的類 來定義新類,主要方法有組合和繼承兩種 繼承是物件導向程式設計支援 重用的另乙個重要機...

繼承與多型

虛函式只要在基類裡定義,所以繼承類都不用重新定義為虛函式,自動成為虛函式。虛函式必須有實現,普通成員函式在沒有呼叫時可以沒有實現 定義 class animal 只需要在基類定義函式為虛,子類中不需要新增virtual.smile函式在沒有呼叫時可以不實現。當有函式為虛函式時,析構函式應定義為vir...

繼承與多型

繼承需要符合的關係 is a,父類更通用 子類更具體 子類繼承父類的所有屬性和方法 不包括父類構造方法 super可以呼叫父類的方法和構造方法 子類可以重寫父類的方法 使用多型之後,當需要增加新的子類型別時,無需更改總部類,程式的可擴充套件性及可維護性增強 簡單來說,多型是具有表現多種形態的能力的特...