Python学习笔记(十二):面向对象之多态

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)

猜你喜欢

转载自blog.csdn.net/weixin_44679832/article/details/114381401