首页 > 解决方案 > 覆盖 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()

标签: polymorphismoverridingoverloading

解决方案


覆盖- 子类中具有相同签名(名称,加上其参数的数量和类型)和返回类型的实例方法作为超类中的实例方法覆盖超类的方法。

在多态中可以通过覆盖来实现。

一个类的子类可以定义它们自己独特的行为,并且共享一些与父类相同的功能。多态是您在运行时不确定对象类型并且调用最具体的方法的地方。因此,调用的方法的行为可能会有所不同,具体取决于运行时的对象类型。


推荐阅读