在面對物件程式設計中,類的三大特性分別為封裝,繼承,多型。其中多型的具體實現,依賴於三個方法,也就是虛方法,抽象類和介面。
多型的具體作用是什麼呢?或者說多型的存在有什麼意義呢?多型的存在有效的降低了程式的耦合度,在使用的時候,不僅可以表現大家都有的共性,還能在必要的時候突出一些特殊的的個性。
那麼如何用上文三個方法實現多型呢?
今天先說下虛方法:
首先,我們定義乙個人類的基類。其中包含了這個人的姓名和國籍。
classperson
}
然後我們新增乙個類。
classpeople1:person
此時我們進行建立物件賦值引用
people1 ch = newpeople1();
ch.name = "小明"
;ch.country = "中國"
;ch.introudce();
執行結果:
我的名字是小明
我來自中國
如果所有人都是中國人,那麼這個方法足以勝任,可偏偏就有這麼乙個人,來自外國,不會中文,那麼這個介紹的方法就有點拗口了。這就是特例,存在即合理,總不能因為他特殊就把他抹殺了吧。這時多型站出來喊了一句:」我髮量多,讓我來!「。
虛方法:在類方法宣告前加上了virtual
修飾符,就稱之為虛方法,反之為非虛。並且在使用了virtual
修飾符後,不允許再有static, abstract, 或override
修飾符。有了這個虛方法,我們就可以十分容易的解決這個特例。
首先我們需要修改一下基類中的介紹方法,讓它虛化,成為乙個虛方法(說白了就是加個修飾符 virtual)
classperson
}
然後我們將這個不合群的特例新增進來,並且專門為他的與眾不同,對方法進行更改,我們稱之為重寫(override)。
classpeople2
}
接下來我們只需要將大象裝進冰箱即可。建立物件,賦值引用
people2 eup = newpeople2();
eup.name = "
jack";
eup.country = "
american";
eup.introudce();
執行結果:
my name
isjacki'
m from american
不需要進行大規模的修改,根據需要進行修改,在不需要修改的時候可以進行原有的方法使用,這就是虛方法的優點。
以上是我個人的一些拙略見解,如果有誤,有幸被前輩看到,也希望前輩能不吝賜教,感謝感謝!!!
C 學習筆記20 多型之虛方法
多型性是允許你將父物件設定成為乙個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作 摘自 delphi4 程式設計技術內幕 簡單的說,就是一句話 允許將子類型別的指標賦值給父類型別的指標。用通俗的語句來講,多型是就是對於同一物件可以表現處多種狀態,在...
C 多型與虛方法
自 同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。換句話說,實際上就是同乙個型別的例項呼叫 相同 的方法,產生的結果是不同的。這裡的 相同 打上雙引號是因為這裡的相同的方法僅僅是看上去相同的方法,實際上它們呼叫的方法是不同的。多型是基於物件繼承和黎克特制轉換的,那麼什...
C 多型,虛方法,抽象方法
多型 是物件導向程式設計中三大機制之一,其原理建立在 從父類繼承而來的子類可以轉換為其父類 這個規則之上,換句話說,能用父類的地方,就能用該類的子類.當從父類派生了很多子類時,由於每個子類都有其不同的 實現,所以當用父類來引用這些子類時,同樣的操作而可以表現出不同的操作結果,這就是所謂的多型.1.了...