java中关于多态的定义并没有一个准确的说法,这也是由于它本身的内容就很复杂。java中这种复杂的机制还有很多,往往需要我们花费大量的时间去研究。接下来主要来说一下它的用途,一起来看看吧。
首先,我们需要知道的是,java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实现对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。
另外,在面向对象编程(Object-Oriented Programming, OOP)中,多态机制无疑是其最具特色的功能,甚至可以说,不运用多态的编程不能称之为OOP。这也是为什么有人说,使用面向对象语言的编程和面向对象的编程是两码事。事实上,多态并没有一个严格的定义。
这里先看一下类型(Subtype)这个词和子类(Subclass)的区别,简单地说,只要是A类运用了extends关键字实现了对B类的继承,那么我们就可以说Class A是Class B的子类,子类是一个语法层面上的词,只要满足继承的语法,就存在子类关系。
子类型比子类有更严格的要求,它不仅要求有继承的语法,同时要求如果存在子类对父类方法的改写(override),那么改写的内容必须符合父类原本的语义,其被调用后的作用应该和父类实现的效果方向一致。
对二者的对比是想强调一点:只有保证子类都是子类型,多态才有意义。
最后说一下,多态的用途
1.多态最大的用途在于对设计和架构的复用,更进一步来说,《设计模式》中提倡的针对接口编程而不是针对实现编程就是充分利用多态的典型例子。
2.定义功能和组件时定义接口,实现可以留到之后的流程中。同时一个接口可以有多个实现,甚至于完全可以在一个设计中同时使用一个接口的多种实现(例如针对ArrayList和LinkedList不同的特性决定究竟采用哪种实现)。
可以看出,java多态的内容相关的知识还是很复杂很繁多的。类似这样的知识点java中还有很多。想要了解更多的java常见问题,敬请关注奇Q工具网。
推荐阅读: