什么叫多态?在Java中是如何实现多态的?,什么是多态机制?Java语言中是如何实现多态的?
什么是多态?
多态是指一个引用变量会指向哪个类实例对象,引用变量发出的方法调用是实现哪个类的方法,这是程序运行过程中必须决定的。
由于具体的类是在程序运行时才确定的,所以引用变量可以在不修改源代码的情况下绑定到各种类实现上,这就导致了引用调用的具体方法的改变,即在程序运行时,可以在不修改程序代码的情况下改变程序绑定的具体代码,使程序可以选择多种运行状态。这就是多态性。
(免费在线学习视频教程分享:java在线学习)
特点:
对子类的父类的引用由于其向上转换只能访问父类所拥有的方法和属性,而对存在于子类中但不存在于父类中的方法的引用则不能使用,即使方法是重载的。
如果一个子类覆盖了父类中的一些方法,那么在调用这些方法时,必须使用子类中定义的这些方法(动态连接,动态调用)。
Java实现多态有三个必要条件:继承、重写、向上转型。
调用的priority方法,就是:this.show(O),super.show(O),this.show((super)O),super.show((super)O)。
多态的实现原理
Java对象方法的调用依赖于类信息中的方法表。
一般来说,当一个对象的方法被调用时,JVM会查找对象类的方法表来确定方法的直接引用地址,然后有了地址之后才真正调用方法。
超类继承父类的方法。如果该方法没有被重写,它将在被调用时指向父类的方法。如果方法被覆盖,它指向类的代码区域,但是超类将存储父类的方法表。
我们知道java程序在运行的时候,类的相关信息是放在方法区的。在这些信息中,有一个叫做方法表的区域,包含了这个类型定义的所有方法的信息,以及指向这些方法的实际代码的指针。
如图所示:
如何解决写爬虫IP受阻的问题?立即使用。
当四个类Bird、Cock、Parrot和CrazyParrot被加载到Java虚拟机的方法区域时,方法区域包含这四个类的信息。下图说明了每个类的方法表。
从图中我们可以看到Cock、Parrot和CrazyParrot的类信息方法表包含了从Bird继承的方法。CrazyParrot的方法表包含从Parrot继承的方法。另外,每个类都有自己的方法。
看,方法表条目指向的具体方法代码区域。对于多态重写方法,contract(),虽然Cock、Parrot、CrazyParrot的方法表中的contract()条目都属于继承自Bird方法表的部分,但是指向不同的方法代码区域。
分享相关文章和教程:java语言入门。以上是java实现多态性原理的详细内容。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。