简单的说,其实多态就是“相同的表达式,不同的操作”,也可以说成“相同的命令,不同的操作”。程序在运行的过程中,根据传递的参数的不同,执行不同的函数或者操作不同的代码,这种在运行过程中才确定调用的方式成为运行时多态
多态的意义在于,它实现了接口重用(同一的表达式),接口重用带来的好处是程序更易于扩展,代码重用更加方便,更具有灵活性,也就能真实地反映现实世界。
下面是一个简单的Python程序,更直观的体现运行时多态
>>>class Man:
>>> def intro(self):
>>> print("我的姓名是XXXXXXXXXXXXXXXXXXXXXX")
>>>class Women:
>>> def intro(self):
>>> print("我的姓名是oooooooooooooooooooooo")
>>>def introduction(person):
>>> person.intro()
>>>m = Man()
>>>w = Women()
>>>introduction(m)
>>>introduction(w)
这里运行结果为:
我的姓名是XXXXXXXXXXXXXXXXXXXXXX
我的姓名是oooooooooooooooooooooo
这里定义了两个类man类和woman类但是方法相同,都是intro(self):但是输出结果却不同,这说明运行时这个方法有两种形态,这就叫运行时多态
其实多态就是多重状态。比如有一个父类superClass,它有2个子类subClass1,subClass2。superClass有一个方法func(),两个子类都重写了这个方法。那么我们可以定义一个superClass的引用obj,让它指向一个子类的对象,那么我们调用obj.func()方法时候,会进行动态绑定,也就是obj它的实际类型的func()方法,即subClass1的func()方法。这种由于子类重写父类方法,然后用父类引用指向子类对象,调用方法时候会进行动态绑定,这就是多态。多态对程序的扩展具有非常大的作用,比如你要再有一个subClass3,你需要改动的东西会少很多,要是使用了配置文件那就可以不动源代码了。