如何以一种易于理解的方式描述多态?我们可以在Internet和书籍上找到很多有关该主题的信息,例如Type polymorphism。但是,让我们尝试使其尽可能简单。
3 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
每个带有简单弹出盖的罐子都以相同的方式打开。
作为人类,您知道可以找到任何可以打开的对象。
打开后,并非所有的罐子的行为都相同。
有些包含坚果,有些包含冒出来的假蛇。
结果取决于罐的类型,如果罐是“ CanOfNuts”或“ CanOfSnakes”,但这与如何打开它无关。您只知道可以打开任何罐头,并且会根据您打开的罐头类型确定某种结果。
pUnlabledCan-> Open(); //可能会给坚果,可能会给蛇。直到我们叫它才知道
Open()的通用返回类型为“ Contents”(或者我们可能决定不返回类型),因此open始终具有相同的函数签名。
您(人类)是用户/呼叫者。
Open()是虚拟/多态函数。
“可以”是抽象的基类。
CanOfNuts和CanOfSnakes是“ Can”类的多态子代。
每罐可打开,但具体是什么它做什么具体的塔伊的内容通过某种可它是什么,它返回的定义。
看到pUnlabledCan时,您所知道的就是可以Open()它,它将返回内容。其他任何行为(例如您的脸上弹出蛇)都由特定的Can决定。
添加回答
举报
0/150
提交
取消