您的位置:首页 > 财经 > 金融 > 【JVM】JVM栈帧中的动态链接 与 Java的面向对象特性--多态

【JVM】JVM栈帧中的动态链接 与 Java的面向对象特性--多态

2024/11/17 19:43:03 来源:https://blog.csdn.net/weixin_42904738/article/details/142004598  浏览:    关键词:【JVM】JVM栈帧中的动态链接 与 Java的面向对象特性--多态

栈帧

每一次方法调用都会有一个对应的栈帧被压入栈(虚拟机栈)中,每一个方法调用结束后,都会有一个栈帧被弹出。

每个栈帧中包括:局部变量表、操作数栈、动态链接、方法返回地址。

在这里插入图片描述
JavaGuide:Java内存区域详解(重点)

动态链接

动态链接:指向运行时常量池中该栈帧所属方法的引用。在这里插入图片描述在这里插入图片描述

多态

多态允许不同类的对象对同一消息做出响应,但表现出不同的行为(即方法的多样性)。

多态其实是一种能力——同一个行为具有不同的表现形式;换句话说就是,执行一段代码,Java 在运行时能根据对象类型的不同产生不同的结果。

多态的前置条件有三个:

  • 子类继承父类
  • 子类重写父类的方法
  • 父类引用指向子类的对象

多态的目的是为了提高代码的灵活性和可扩展性,使得代码更容易维护和扩展。比如说动态绑定,允许在程序在运行时再确定调用的是子类还是父类的方法。

现在有一个父类 Wanger,一个子类 Wangxiaoer,都有一个 write 方法。引用 wanger 的类型是父类的 Wanger,那在执行 wanger.write() 时,究竟该调用父类 Wanger 的 write() 方法,还是子类 Wangxiaoer 的 write() 方法呢?

答案是在运行时根据对象的类型进行后期绑定,编译器在编译阶段并不知道对象的类型,但是 Java 的方法调用机制能找到正确的方法体,然后执行,得到正确的结果。

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com