Python中的多态性
面向对象编程的三大特性:封装性、继承性、多态性。下面用简单的比喻和举例带大家一起了解python语言中的多态性。
举例类比
比如上课时,老师对全班同学说:“大家把自己的名字写在各自的作业本上”,这时候,张三会在张三的本子上写上“张三”的名字,李四会在李四的作业本上写上“李四”的名字,王五会在王五的作业本上写上“王五”的名字,而老师口中的“自己”,此时在这里代表了班上不同的人,而写名字这件事,大家也都写上了各自的名字。这就是多态性。
延伸到python中,同一个变量“自己”,调用同一个方法“写名字”,但是不同类的对象(张三、李四、王五)在执行“写名字”函数时,执行的是各自“写名字”的方法。
代码演示
下面展示一些 多态性代码示例
。
```python
# 代码示例
class Animals(object):
def run(self):
print ("Animal is running")
class Dog(Animals):
def run(self):
print ("Dog is running")
class Cat(Animals):
def run(self):
print ("Cat is running")
Dog和Cat继承了Animals,同时继承了run方法,并且各自做了修改
当同一个对象a,指向不同的对象示例时,会执行各自的run()方法
a = Animals()
a.run()
a = Dog()
a.run()
a = Cat()
a.run()
输出结果:
代码可见:同一个变量在执行同一个函数时,变量名相同,参数相同的情况下,会根据a指向的实例对象不同,在程序执行时调用不同的run()方法,这就是多态性。