多态:一种接口,多种实现; 允许将子类类型的指针赋值给父类类型的指针。
封装:隐藏实现细节,使代码模块化;
继承:可以扩展已存在的代码模块(类);
多态:接口重用,为了类在继承和派生时,保证使用“家族”中任一类的实例的某一属性时正确调用;
举例
例如定义一个类:动物
再定义猫,狗
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