文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
多态
多态,就是说多种形态。
例如在之前的手机例子中,手机就拥有多种形态,一种形态能发短信,另一种形态不能发短信。但总的来说,它们都属于手机,它们都具备手机共有的功能:开机和打电话。
在代码中,我们可以把子类实例存放到父类类型的变量中,并且可以根据父类中的成员名称访问子类的成员:
var 某人的手机:手机 = 新手机.new()
某人的手机.打电话("10086")
# 虽然 某人的手机 是手机类型,但其值是新手机,所以调用的是新手机的打电话方法。
# 某人的手机.发短信("10086","Hello")
# 上面这句注释掉的代码是错误的。
# 虽然新手机能发短信,但是 某人的手机 是老手机类型,不包含发短信方法。
[!note]
新手机.new()
的意思是实例化一个新手机,就是创造一个新手机实例的意思。
例如我现在拥有三台手机:
var 手机们 := [
手机.new(),
新手机.new(),
手机.new(),
]
这三台手机都存放在了数组中,现在我想给它们都开机:
for 手机之一 in 手机们:
手机之一.开机()
在这段开机的遍历代码中,我们并不在乎手机是新手机还是老手机,我们只管调用它的开机方法即可,此时的 手机之一
变量就是具有多种形态的。
当然,使用多态的目的不是让我们的变量变得花里胡哨,而是规范一类操作,在刚才的例子中,我们就规范了所有手机的开机方式都应该使用 开机
方法,最终的作用就是实现了这一句话:不在乎手机是新手机还是老手机,我们只管调用它的开机方法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论