一、多态的概念
以封装继承为前提,不同的子类对象调用相同的方法,产生不同的执行结果
二、多态的条件
- 继承的存在(继承是多态的基础,没有继承就没有多态).
- 子类重写父类的方法(多态下调用子类重写的方法).
- 父类引用变量指向子类对象(子类到父类的类型转换).
三、实例
class Dog(object):
def __init__(self, name):
self.name = name
def game(self):
print '%s 蹦蹦跳跳的玩..' % self.name
class Xiaotiandog(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()
# 1.创建一个狗对象
#wangcai = Dog('旺财')
wangcai = Xiaotiandog('旺财')
# 2.创建一个小明对象(小明是一个人)
xiaoming=Person('小明')
# 3.让小明调用和狗玩的方法(把之前创建的狗对象传递进去)
xiaoming.game_with_dog(wangcai)