1.多态的定义
当同一个变量在调用同一个方法时,完全可能呈现出多种行为(具体呈现出哪种行为由该变量所引用的对象来决定),这就是所谓的多态。
2.多态的实例
如下所示:
# 定义一个Animal类
class Animal(object):
def __init__(self, species, color):
self.species = species
self.color = color
# 定义一个子类Dog
class Dog(Animal):
def speak(self):
print("我是一只{},我的颜色是{}".format(self.species, self.color))
# 定义一个子类Cat
class Cat(Animal):
def speak(self):
print("我是一只{},我的颜色是{}".format(self.species, self.color))
# 实例化一个Dog类对象
animal = Dog("泰迪", "棕色")
animal.speak()
# 实例化一个Cat类对象
animal = Cat("波斯猫", "白色")
animal.speak()
输出结果如下所示:
我是一只泰迪,我的颜色是棕色
我是一只波斯猫,我的颜色是白色
从上面的运行结果可以看出,同一个变量animal在调用同一个方法speak()时,由于animal指向的对象不同,因此它呈现出不同的行为特征,这就是多态。
可将上面的代码修改成如下所示:
# 定义一个Animal类
class Animal(object):
def __init__(self, species, color):
self.species = species
self.color = color
# 定义一个子类Dog
class Dog(Animal):
def speak(self):
print("我是一只{},我的颜色是{}".format(self.species, self.color))
# 定义一个子类Cat
class Cat(Animal):
def speak(self):
print("我是一只{},我的颜色是{}".format(self.species, self.color))
# 实例化一个Dog类对象
teddy = Dog("泰迪", "棕色")
# 实例化一个Cat类对象
persian_cat = Cat("波斯猫", "白色")
# 定义一个统一的接口来访问
def func(object):
object.speak()
func(teddy)
func(persian_cat)