[讨论] 各位,能不能就JVM层面来分析下,JVM如何进行JAVA的动态绑定的?
gogole_09
2012-02-07
class Animal { private int i=1; public void walk(){System.out.println(i);} } public class Duck extends Animal{ private int i=2; public static void main(String...a) { Animal animal = new Duck(); animal.walk(); } } 这个例子的结果,输出的是:1 各位请问一下, 在下面动态绑定的代码中,JVM做了哪些事情? Animal animal = new Duck(); animal.walk(); |
|
nkhanxh
2012-02-08
我认为 应该和c++中虚函数实现差不多吧。应该是kclassinstance中那个vtable在作用吧。然后jit编译器会做适当的优化,比如动态内联之类的。
具体细节我就不清楚了 gogole_09 写道 class Animal { private int i=1; public void walk(){System.out.println(i);} } public class Duck extends Animal{ private int i=2; public static void main(String...a) { Animal animal = new Duck(); animal.walk(); } } 这个例子的结果,输出的是:1 各位请问一下, 在下面动态绑定的代码中,JVM做了哪些事情? Animal animal = new Duck(); animal.walk(); |
相关讨论
相关资源推荐
- 屏幕尺寸、分辨率、视口笔记
- 如何将你的浏览器窗口设定到指定分辨率
- 【前端】如何修改IE11的三个分辨率(1920,1440,1366)
- jquery和js检测浏览器窗口尺寸和分辨率
- 二、视口 布局视口 视觉视口 理想视口
- ASP.NET入驻Github 下一代ASP.NET将全部开源
- ASP.NET MVC 5 SmartCode Scaffolding for Visual Studio.Net
- 3万字长文概述:通俗易懂告诉你什么是.NET?什么是.NET Framework?什么是.NET Core?
- 【.NET Core项目实战-统一认证平台】第三章 网关篇-数据库存储配置(1)
- Visual Studio 2017 15.7 下的.NET Core