为了账号安全,请及时绑定邮箱和手机立即绑定

尝试尽可能简单地描述多态

尝试尽可能简单地描述多态

如何以一种易于理解的方式描述多态?我们可以在Internet和书籍上找到很多有关该主题的信息,例如Type polymorphism。但是,让我们尝试使其尽可能简单。
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

每个带有简单弹出盖的罐子都以相同的方式打开。
作为人类,您知道可以找到任何可以打开的对象。

打开后,并非所有的罐子的行为都相同。
有些包含坚果,有些包含冒出来的假蛇。
结果取决于罐的类型,如果罐是“ CanOfNuts”或“ CanOfSnakes”,但这与如何打开它无关。您只知道可以打开任何罐头,并且会根据您打开的罐头类型确定某种结果。

pUnlabledCan-> Open(); //可能会给坚果,可能会给蛇。直到我们叫它才知道

Open()的通用返回类型为“ Contents”(或者我们可能决定不返回类型),因此open始终具有相同的函数签名。

您(人类)是用户/呼叫者。
Open()是虚拟/多态函数。
“可以”是抽象的基类。
CanOfNuts和CanOfSnakes是“ Can”类的多态子代。
每罐可打开,但具体是什么它什么具体的塔伊的内容通过某种可它是什么,它返回的定义。
看到pUnlabledCan时,您所知道的就是可以Open()它,它将返回内容。其他任何行为(例如您的脸上弹出蛇)都由特定的Can决定。


查看完整回答
反对 回复 2019-11-25
  • 3 回答
  • 0 关注
  • 582 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信