一、前言
多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,指一个基类中派生出了不同的子类,且每个子类在继承了同样的方法名的同时又对父类的方法做了不同的实现,这就是同一种事物表现出的多种形态。
编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话,对不同类的对象发出相同的消息将会有不同的行为。
多态允许将子类的对象当作父类的对象使用,某父类型的引用指向其子类型的对象,调用的方法是该子类型的方法。这里引用和调用方法的代码编译前就已经决定了,而引用所指向的对象可以在运行期间动态绑定。
二、多态
一个抽象类具有多个子类,就是多种形态。多态依赖于继承,没有继承就没有多态。
1 class Animal(object): 2 3 def __init__(self, name, age): 4 self.name = name 5 self.age = age 6 pass 7 8 9 class Dog(Animal): 10 11 def __init__(self, name, age, breed): 12 super(Dog, self).__init__(name, age) 13 self.breed = breed 14 pass 15 16 17 class Cat(Animal): 18 19 def __init__(self, name, age, breed): 20 super(Cat, self).__init__(name, age) 21 self.breed = breed 22 pass