python 面向对象编程的三大特征之一 多态

多态就是具有多种形态,即便不知道一个变量所引用的对象到底是什么类型,仍然可以通过这个变量调用方法。

在运行过程中根据变量所引用的对象的类型,动态决定调用哪个对象中的方法。
如果子类中不存在指定名称的方法,回到父类中查找,如果父类中找到了,则调用父类中的方法。


多态的作用是什么呢?

我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。
而多态则是为了实现另一个目的——接口重用!



class Animal(object):
    def __init__(self, name):
        self.name = name

    def talk(self):
        print("Animal talk! ")


class Cat(Animal):  # 继承 Animal
    def talk(self):
        print("%s: 喵喵喵!" % self.name)


class Dog(Animal):  # 继承 Animal
    def talk(self):
        print("%s: 汪汪汪!" % self.name)


def func(parent):  # 定义一个函数 func , 但不知道变量 parent 的类型。一个接口,多种形态
    parent.talk()


c = Cat("毛毛")
d = Dog("憨憨")

func(c)  # 毛毛: 喵喵喵!
func(d)  # 憨憨: 汪汪汪!

编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,

把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话,

对不同类的对象发出相同的消息将会有不同的行为。

原文地址:https://www.cnblogs.com/wwho/p/15635866.html