1.定义
在面向对象编程中,不同的子类对象调用相同的父类方法,产生不同的执行结果;
- 多态可以增加代码的灵活度;
- 以继承和重写父类方法为前提;
- 是调用方法的技巧,不会影响到类的内部设计
代码示例:
需求:定义狗类和人类,要求普通的狗类开心的玩耍,特殊的狗类和米老鼠玩耍。
class Dog(object):
def __init__(self,name):
self.name = name
def game(self):
print('%s 开心的玩耍~' %(self.name))
class Pluto(Dog):
# 父类的方法不能满足子类的需求 重写game方法
def game(self):
print('%s和米老鼠一起玩~' %(self.name))
class Person(object):
def __init__(self,name):
self.name = name
def game_with_dog(self,dog):
print('%s和%s玩~' %(self.name,dog.name))
dog.game()
# 创建一个狗对象
wangcai = Dog('大黄')
#创建另一个狗对象
#wangcai = Pluto('布鲁托')
# 创建一个人对象
xiaoming = Person('小明')
# 让小明和狗玩
xiaoming.game_with_dog(wangcai)
结果: