面向对象有三大特征:封装、继承以及多态。前面几篇博客介绍了封装以及继承,今天来说说多态。
这是题目要求,下面的小结可以看完代码后回过头来看
#多态
class Car(object) :
def __init__(self, name):
self.name = name
def drive(self):
print('%s慢慢地开' %self.name)
class Ferrari(Car) :
def __init__(self, name):
self.name = name
def drive(self):
print('%s快快地开' %self.name)
class Person(object) :
def __init__(self, name):
self.name = name
def drive_using_car(self, car):
print('%s开%s' %(self.name, car.name))
car.drive() #不关心什么车,只需要让车对象调用drive方法即可
#dazhong = Car('大众')
ferrari = Ferrari('法拉利')
xiaoming = Person('小明')
#xiaoming.drive_using_car(dazhong)
xiaoming.drive_using_car(ferrari)
这个结果为
小明开法拉利
法拉利快快地开
如果使用
dazhong = Car('大众')
#ferrari = Ferrari('法拉利')
xiaoming = Person('小明')
xiaoming.drive_using_car(dazhong)
#xiaoming.drive_using_car(ferrari)
则结果为
小明开大众
大众慢慢地开
多态即调用不同的子类对象,调用相同的方法,产生不同的结果!