Python有没有多态???这个问题老是被问起来,答案是有的。python这么强大,有什么理由没有多态?
那么我们来看看什么叫多态?
这是C#语言子类对父类的重写,其实不难读懂,一个Car的类继承了Vehicle的父类,而在子类中对Run()方法进行了重写。什么是重写?即子类属性或方法对父类中相同名字的属性或方法进行覆盖这就是重写。
我们来实例化一个Car,但是你会发现这个Car却是属于Vehicle类的!只学了Python的小伙伴可能会奇怪这是个什么东西??但是我想说这个在C#等语言是可以实现的。这怎么理解?不急,我们来看看。
如果按照前面的代码这个v.Run()得到的结果会是什么呢?答案是Car is running!
因为这个Run()的方法已经被重写了。
但是这时如果我们把virtual 和 override(这两个修饰词意思是被重写和重写(这里理解为被重写有些片面,因为virtual这个单词意思是虚的,那么我们就应该理解为名存实亡的,因为他已经被重写了,实际上他存不存在都无所谓了)) 去掉,这样得到的就是一个I’m running!,因为这两个方法并不存在重写和被重写的关系,既然v属于Vehicle这个类,那么自然而然的v.Run()得到的就是I’m running!。
这就需要引入一个新的概念了,父类与子类的代差,他们之间对相同方法会有不同的效果,而这就是多态。
所谓多态,基于重写机制,而函数成员的具体行为由对象(实