社区
Java SE
帖子详情
A a = new A(); a.method(); 和 IA a = new A(); a.method();两者在jvm里运行时有何区别
zhanglidavid
2009-05-19 10:32:38
难道是在方法的寻址过程,性能上?
...全文
111
7
打赏
收藏
A a = new A(); a.method(); 和 IA a = new A(); a.method();两者在jvm里运行时有何区别
难道是在方法的寻址过程,性能上?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
luopowusheng
2009-05-19
打赏
举报
回复
多态是编译时概念
在jvm里运行两者没有区别
zhanglidavid
2009-05-19
打赏
举报
回复
差不多吧,和动态绑定有关系
knightzhuwei
2009-05-19
打赏
举报
回复
莫非你在问多态在jvm里是如何实现的?
lixj2009
2009-05-19
打赏
举报
回复
没有区别的,
A a = new A(); a.method(); 和 IA a = new A(); a.method();
只是在左边是编译时类型----编译器认为a是什么类型,右边是运行时类型,是JVM认为的
yangmeansyoung
2009-05-19
打赏
举报
回复
个人理解的是这样,第一种情况因为引用本身类型就是对象的类型,编译时就已经确定了会调用的方法是A类中的方法。
第二种情况,父类引用指向子类对象,形成多态,编译时只对方法可见性进行检查,在运行到a.method()时,会通过a这个引用去找堆上对象具体类型,并调用对象中包含的method()方法。
这个完全是不服这不完整不权威,个人理解,仅供参考。期待高人出现。
zhanglidavid
2009-05-19
打赏
举报
回复
对,IA是A的接口,开始忘了说了。。。。
你能从java虚拟机的角度给我讲讲吗,谢谢
yangmeansyoung
2009-05-19
打赏
举报
回复
[Quote=引用 3 楼 luopowusheng 的回复:]
多态是编译时概念
在jvm里运行两者没有区别
[/Quote]
咕~~(╯﹏╰)b 貌似多态应该是运行时的概念吧。父类引用指向子类对象,在调用方法那时才会决定具体是调那个类的方法。。。编译时都决定了,还怎么“多”,不是就卡死了。。。
然后楼主第二句 IA 这个类型是 A 的父类吗?
java面试题
Java考试题 一:单选题 下列哪一种叙述是正确的(D ) A. abstract修饰符可修饰字段、方法和类 B. 抽象方法的body部分必须用一对大括号{ }包住 C. 声明抽象方法,大括号可有可无 D. 声明抽象方法不可写出大括号 如下代码 public class Test { public int a
Method
() { static int i = 0; i++; return i; } public static void main (String args[]) { Test test
Typescript
ts的基本类型 1.布尔型:var a:boolean =false ,var a:Boolean=true 2.数值型:var a:number=2; var a :Number=2;var b:bigint 数值中的大整形 ;c=0xff 十六进制中的数值型 3.字符型 var a :string=''a" ;var b:string='b' ;var c=String=`c` 4.undefined : var a: undefined=undefined; 5.null类型 :var a:
java常用知识点总结-4
java常用知识点
Linux 2.6.19.x 内核编译配置选项简介
由于作者水平有限,因此不能保证作品内容准确无误,请在阅读中自行鉴别。如果你发现了作品中的错误,请您来信指出,哪怕是错别字也好,任何提高作品质量的建议我都将虚心接纳。如果你愿意就作品中的相关内容与我进行进一步切磋与探讨,也欢迎你与我联系。联系方式:MSN: csfrank122@hotmail.comCode maturity level options
代码成熟度选项Prompt for development and/or incomplete code/drivers 显示尚在开发
java知识点精要_Java认证精要
下面的东西是我收集到的,开发中能用到,备份一下1.switch
里
面只能是short,int,char,byte的?2.if (a="a") 编译错, if(a=false)编译ok,原因是a=false的a代表了个boolean值3.这种写法Outer.Inner i =
new
Outer().
new
Inner(); OK!4.文件
里
, 8 默认是int, 8.0默认是double5.八进制是...
Java SE
62,616
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章