物件的多型性只適用於方法,不適用於屬性(編譯執行都看左邊).
3.多型的使用稱為虛擬方法呼叫
子類方法重寫的時候,父類稱為虛擬方法,編譯呼叫虛擬方法。
方法可以重寫,屬性不重寫。如果父類和子類擁有同名屬性,則呼叫改子類的時候實際有兩個同名變數,可以通過this和super來區別。
1.什麼是多型性
2.什麼是虛擬方法呼叫
3.乙個類可以有幾個父類,乙個父類可以有多少個子類,
子類能獲取直接父類的父類中的結構嗎,子類能否獲取父類中private許可權的屬性或方法
(可以,寫get,set方法)
重寫方法名形參列表一樣,子類許可權必須比父類大,父類是private子類不能繼承,void void ,
父類是引用資料類 子類必須是繼承類的引用資料類,父類是基本資料類,子類也是一樣的基本資料類。
super
呼叫屬性方法構造器
super呼叫構造器
this形參列表呼叫本類過載的構造器,
super形參列表呼叫父類過載的構造器。
有了物件的多型性以後,記憶體中實際上是載入了子類特有的屬性和方法,但由於變數宣告為父類型別,
導致編譯時,只能呼叫父類中宣告的屬性和方法。子類特有的屬性和方法不能呼叫。
如何呼叫子類特有的屬性和方法?
強制型別轉換
man子 m1=(man)p2父;向下轉型
強轉有風險。使用強轉時可能出現classcastexception 異常
所以引入乙個關鍵字instanceof;
問題:我強轉之後還能使用父類的特有的方法嗎。
可以格式
if(a instanceof a)
如過上面能通過那麼
if(a instanceof a的父類)
強轉一般用於不滿足於父類僅有的多型性,想要使用子類特有的方法時。 C 多型性總結
多型性是c 語言最重要的基本特徵之一 正是因為多型性的靈活,才使之如此重要,也需要仔細思考才能很好把握 多型 polymorphism 動態繫結使編譯器能夠在執行時決定使用基類中定義的函式還是派生類中定義的函式 虛函式的前提是有基類及其派生類 在基類中要有虛函式的定義 成員函式的virtual宣告....
C 多型性總結
c 物件導向程式中存在三種多型 1 物件型別的多型。派生類的物件的型別既可以是派生類,也可以是基類,即乙個物件可以屬於多種型別。2 物件標識的多型。基類的指標或引用可以指向或引用基類物件,也可以指向或引用派生類物件,即乙個物件標識可以屬於多種型別,它可以標識多種物件。在物件識別符號定義時指定的型別稱...
C 多型性總結
多型是指同樣的訊息被不同型別的物件接受時導致不同的行為。所謂訊息是指對類的成員函式的呼叫,不同的行為是指不同的實現,也就呼叫不同的函式。換言之,多型指的就是用同樣的介面訪問功能不同的函式,從而實現 乙個介面,多種方法 物件導向的多型性可以分為4類 過載多型,強制多型,包含多型,引數多型。前面兩種統稱...