polymorphism - 覆盖 vs 多态 vs 重载
问题描述
两者有什么区别?
具有 explore() 的超类和具有相同方法的继承类,这是覆盖还是多态?
我很清楚黑白覆盖和重载的区别,但多态性和覆盖似乎是一样的。还是他们?
class A:
def explore(self):
print("explore() method from class A")
class B(A):
def explore(self):
super().explore() # calling the parent class explore() method
print("explore() method from class B")
b_obj = B()
b_obj.explore()
解决方案
覆盖- 子类中具有相同签名(名称,加上其参数的数量和类型)和返回类型的实例方法作为超类中的实例方法覆盖超类的方法。
在多态中可以通过覆盖来实现。
一个类的子类可以定义它们自己独特的行为,并且共享一些与父类相同的功能。多态是您在运行时不确定对象类型并且调用最具体的方法的地方。因此,调用的方法的行为可能会有所不同,具体取决于运行时的对象类型。
推荐阅读
- sql-server - 使用 SQLCMD 连接到 Windows 2003 服务器
- c# - 将 PsObject[long] 转换为 DateTime 的更短时间
- azure - 由于存储帐户错误,无法打开 Cloud Shell
- mongodb - 如何更新文档中的 Meteor 数组元素
- html - 生成的组件灰显且未在源代码管理中显示
- python - 为什么这个变量在python中没有改变?
- sql - Oracle JSON_OBJECT NULL ON NULL 子句不起作用
- ios - 如何在调用 API 时向 APNS 发送推送证书?
- javascript - 保存数据失败。node.js 中的验证失败
- regex - 将字符串附加到片段中的单词