同一个方法(方法名相同),由于参数类型或参数个数不同而导致执行效果各异的现象就是多态。
在Java或C#等强类型语言中,多态是通过一个父类类型的变量来引用一个子类类型的对象来实现的,即根据引用子类对象特征不同,得到不同的运行结果。
例 7-15 多态的实现
#ex0715.py 多态的实现
class Animal:
def __init__(self,aname):
self.name = aname
def enjoy(self):
print("动物在叫")
class Cat(Animal):
def enjoy(self):
print(self.name,"喵喵喵")
class Dog(Animal):
def enjoy(self):
print(self.name,"汪汪汪")
class Person:
def __init__(self,id,name):
self.name = name
self.id = id
def drive(self,ani):
ani.enjoy()
cat = Cat("Mikey")
dog = Dog("Dahuang")
person = Person("张三",9)
person.drive(cat)
person.drive(dog)
运行结果: