当前位置: 首页 > news >正文

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

栈帧

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

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

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

动态链接

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

多态

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

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

多态的前置条件有三个:

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

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

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

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

在这里插入图片描述


http://www.mrgr.cn/news/21686.html

相关文章:

  • 2024数学建模国赛选题建议+团队助攻资料(已更新完毕)
  • LCP 485. 最大连续 1 的个数[lleetcode -11]
  • MapSet之二叉搜索树
  • python 实现kadanes卡达内斯算法
  • Deepspeed框架学习笔记
  • 龙芯+FreeRTOS+LVGL实战笔记(新)——05部署主按钮
  • 【NumPy】基础知识
  • 14.1 为什么说k8s中监控更复杂了
  • Java基础 1. Java开发环境搭建
  • C语言程序设计 笔记代码梳理 重制版
  • JobScheduler 调用导致的运行时长30分钟的功耗问题
  • 爆改YOLOv8|利用图像分割网络UNetV2改进yolov8主干-即插即用
  • 【60天备战软考高级系统架构设计师——第十一天:系统集成与测试——集成策略】
  • 指针与函数(一)
  • Python安装:Mac 使用brew 安装Python2 和 Python3
  • mybatis 自定义类型处理器
  • 鸿蒙轻内核M核源码分析系列十五 CPU使用率CPUP
  • Web安全之XSS跨站脚本攻击:如何预防及解决
  • 【Qt】处理键盘事件
  • JVM - Java内存区域