首先什么是多态?
答: 多态在编程中的解释是: 为不同类型的实体提供单一的接口, 或使用单一的符号代表多种不同的类型.
通俗的解释就是: 一词多用或一词多义.
那么类的多态是什么?
答: 类的多态就是多态在类里面的落地实现.
最典型的应用就是: 父类的函数在不同子类中用不同的代码实现其功能, 这个多态行为称为重写函数.
举个例子, 请看下图:
图中动物这个基类拥有一个方法: 跑步.
它的两个子类也继承了这个方法.
但在实际情况中, 人科动物和犬科动物在跑步时的体现是各不相同的,
人科动物使用两腿跑步, 而犬科动物使用四足跑步.
因此在子类中对这个方法进行重写代码是必要的.
下面是代码的实践部分
class 动物:
速度 = 20
def __init__(self):
self.速度 = 10
print('* 这是动物的构造函数')
def 跑步(self, 公里):
print('我在跑步, 公里', 公里)
class 人科(动物):
def __init__(self):
动物.__init__(self)
print('* 这是人科的构造函数')
def 跑步(self, 公里):
print('两腿速度,', self.速度)
class 犬科(动物):
def __init__(self):
print('* 这是犬科的构造函数')
def 跑步(self, 公里):
动物.跑步(self, 公里)
print('四足速度,', self.速度)
唐僧 = 人科()
唐僧.跑步(100)
哮天犬 = 犬科()
哮天犬.跑步(200)
首先是新建 动物 这个基类, 并创建其构造函数和名为跑步的函数
然后再新建 人科 和 犬科 这两个子类
在人科这个子类中, 写入与父类同名的跑步函数, 即为重写函数.
以后从人科创建出来的实例, 在调用跑步函数时, 就再也不会执行父类的代码,
而只会执行本类中重写函数的代码.
若想在重写函数中再调用其父类的同名函数, 则写入此语法:
父类类名, 点, 函数名, 再带上self和其参数即可.
例如, 示例中人科的构造函数调用了其父类的构造函数, 因此速度为10
再例如, 犬科的跑步函数调用了其父类的跑步函数, 因此输出了公里数