多态定义
在面向对象编程中, 多个类的相同接口差异化实现.
多态作用
通过在多个类中实现通用接口, 使得该类具有接口对应的功能. 魔法函数就是充分利用了多态. 比如, 两个类, 分别都实现了__getitem__
这个魔法函数, 则两个类都可以进行for循环与切片操作.
因此有一个类常常用于定义接口规范, 不做具体实现. 不同的类通过实现该类完成了从而具有了多态性. 即同一种接口行为具有不同的形态.
多态性
- 静态多态性: 在程序编译期间可以确定程序具体执行到这里将要执行哪个函数
- 动态多态性: 在程序编译期间并不能确定程序将要调用哪个函数, 只有在运行到这里时, 才能确定接下来跳转到哪一个函数中. 这是利用虚函数实现了运行时的多态, 也叫动态多态性. Java,python语言中的多态属于动态多态性.
鸭子类型
在Java等静态语言中通过继承类, 或者实现多接口的方式实现多态. 而在python中除了通过继承父类实现多态, 还可以通过鸭子类型实现多态. 这也是python中魔法函数的作用.A, B两个毫无关系的类, 通过实现同一个魔法函数拥有了相同的表现形态.
网友评论