覆盖vs多态vs重载

时间:2019-01-02 13:06:39

标签: polymorphism override overloading

两者之间有什么区别?

具有explorer()的超类和具有相同方法的继承类,这是重写还是多态?

我清楚b / w覆盖和重载的区别,但多态性和覆盖似乎相同。还是他们?

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()

2 个答案:

答案 0 :(得分:1)

多态是一个广泛的概念,其中包括重载和重载等等。它只是对象提供多种行为的能力。

重载和重载是如何实现多态的两个示例。

以下相关问题可能会有用:

Are polymorphism, overloading and overriding similar concepts?

答案 1 :(得分:1)

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

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

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