*面向对象的特征——多态的意义和操作过程

简单的说,其实多态就是“相同的表达式,不同的操作”,也可以说成“相同的命令,不同的操作”。程序在运行的过程中,根据传递的参数的不同,执行不同的函数或者操作不同的代码,这种在运行过程中才确定调用的方式成为运行时多态

多态的意义在于,它实现了接口重用(同一的表达式),接口重用带来的好处是程序更易于扩展,代码重用更加方便,更具有灵活性,也就能真实地反映现实世界。

下面是一个简单的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,你需要改动的东西会少很多,要是使用了配置文件那就可以不动源代码了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容