1. 多态
面向对象三大特性
- 封装:根据职责将属性和方法封装到一个抽象的类中。
- 继承:实现代码的重用,相同的代码不需要重复编写。
- 多态:不同的子类对象调用相同的父类方法,产生不同的执行结果。
多态的特性
- 可以增加代码的灵活度。
- 以继承和重写父类方法为前提。
- 是调用方法的技巧,不会影响到类的内部设计。
多态与无多态的比较
没有多态的代码示例
class ArmyDog(object):
def bite_enemy(self):
print('追击敌人')
class DrugDog(object):
def track_drug(self):
print('追查毒品')
class Person(object):
def work_with_army(self, dog):
dog.bite_enemy()
def work_with_drug(self, dog):
dog.track_drug()
p = Person()
p.work_with_army(ArmyDog())
p.work_with_drug(DrugDog())
可以看出,如果添加一个新类(例如继承 Dog),代码的增加就很麻烦。
有多态的代码示例
class Dog(object):
def work(self):
pass
class ArmyDog(Dog):
def work():
()
():
():
()
():
():
dog.work()
p = Person()
p.work_with_dog(ArmyDog())
p.work_with_dog(DrugDog())

