如何以一種易于理解的方式描述多態?我們可以在Internet和書籍上找到很多有關該主題的信息,例如Type polymorphism。但是,讓我們嘗試使其盡可能簡單。
3 回答

海綿寶寶撒
TA貢獻1809條經驗 獲得超8個贊
每個帶有簡單彈出蓋的罐子都以相同的方式打開。
作為人類,您知道可以找到任何可以打開的對象。
打開后,并非所有的罐子的行為都相同。
有些包含堅果,有些包含冒出來的假蛇。
結果取決于罐的類型,如果罐是“ CanOfNuts”或“ CanOfSnakes”,但這與如何打開它無關。您只知道可以打開任何罐頭,并且會根據您打開的罐頭類型確定某種結果。
pUnlabledCan-> Open(); //可能會給堅果,可能會給蛇。直到我們叫它才知道
Open()的通用返回類型為“ Contents”(或者我們可能決定不返回類型),因此open始終具有相同的函數簽名。
您(人類)是用戶/呼叫者。
Open()是虛擬/多態函數。
“可以”是抽象的基類。
CanOfNuts和CanOfSnakes是“ Can”類的多態子代。
每罐可打開,但具體是什么它做什么具體的塔伊的內容通過某種可它是什么,它返回的定義。
看到pUnlabledCan時,您所知道的就是可以Open()它,它將返回內容。其他任何行為(例如您的臉上彈出蛇)都由特定的Can決定。
添加回答
舉報
0/150
提交
取消