方法重写

子类可以包含与父类相同签名的方法,即子类中的方法将重写(Override)父类的方法,从而表现出与父类不同的行为,而其他方法仍然继承父类。

由继承而产生的相关的不同的类,其对象对同一方法会做出不同的响应,这种机制被称为多态(Polymorphism)。多态是面向对象编程的三大基本特征之三。

在下面示例中,子类 CarTrainBicycle 都重写了父类的 whistle 方法:

class Vehicle:
    def whistle(self):
        print('鸣笛声')

class Car(Vehicle):
    def whistle(self):
        print('嘀……嘀……')

class Train(Vehicle):
    def whistle(self):
        print('呜……呜……')

class Bicycle(Vehicle):
    def whistle(self):
        print('叮铃铃……')

上例中三个子类的实例对象可以嵌入到一个更大的容器中,通过循环语句进行遍历,并调用他们同名的方法:

vehicles = [Car(), Train(), Bicycle()]
for v in vehicles:
    v.whistle()
# 嘀……嘀……
# 呜……呜……
# 叮铃铃……

这些同名的方法表现出不同的行为,这就是多态。

类的继承特征属性