Python笔记(十四):类的多态

多态:一种接口,多种实现; 允许将子类类型的指针赋值给父类类型的指针。

封装:隐藏实现细节,使代码模块化;
继承:可以扩展已存在的代码模块(类);
多态:接口重用,为了类在继承和派生时,保证使用“家族”中任一类的实例的某一属性时正确调用;


举例

例如定义一个类:动物
再定义猫,狗

class Animal(object):
    def __init__(self,name):
        self.name = name
    def talk(self):
        pass
class Dog(Animal):
    def talk(self):
        print("Woof,Woof!")
class Cat(Animal):
    def talk(self):
        print("meow")
a = Dog("Alan")
b = Cat("Evan")
a.talk()
b.talk()


>> Woof,Woof!
>> meow

先实例化后,然后分别调用方法
如果想使用animal_talk直接输出呢?

# 再加一句:

def animal_talk(obj):
    obj.talk()

a = Dog("Alan")
b = Cat("Evan")

animal_talk(a)
animal_talk(b)

这样就有了统一的接口,需要谁叫就传谁进来
即一种接口,多种实现;

将该方法放入父类中

class Animal(object):
    def __init__(self,name):
        self.name = name
    def talk(self):
        pass
    def animal_talk(obj):
        obj.talk()

class Dog(Animal):
    def talk(self):
        print("Woof,Woof!")

class Cat(Animal):
    def talk(self):
        print("meow")


a = Dog("Alan")
b = Cat("Evan")
Animal.animal_talk(a)
Animal.animal_talk(b)


>> Woof,Woof!
>> meow

猜你喜欢

转载自blog.csdn.net/weixin_42026630/article/details/80671164
今日推荐