继承与多态

文章探讨了静态连接与非虚方法的区别,重点讲解了动态连接和虚方法的概念,以及方法重写如何通过动态分派实现。通过JVM中的invokevirtual指令,展示了Java多态在底层的实现逻辑,涉及虚方法表在这一过程中的作用。
摘要由CSDN通过智能技术生成

1.静态连接与非虚方法

2.动态连接与虚方法

分派描述的是方法版本确定的过程

方法重载 静态分派

方法重写 动态分派

举个例子

  • 动态分派能够让我们从语言层面正确辨析重写(多态),我觉得它是Java语义上多态的实现
  • invokevirtual指令则是对动态分派这个概念在JVM层面上功能的具体实现,即在JVM中是用怎样一种逻辑实现了动态分派。明白了这个指令,感觉也就体现了多态实现代码中的实现逻辑
  • 虚方法表则是支撑着invokevirtual指令的实现,我们知道invokevirtual指令代表了递归查找当前栈帧操作数栈顶上引用所代表的实际类型的过程,而虚方法表的实现就是让invokevirtual指令有地方可查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值