A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 安阳 中级黑马   /  2013-8-16 23:40  /  3453 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态中为非静态成员方法在编译跟运行时会有差别么,具体是怎么个运行机制?求解

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

5 个回复

倒序浏览
这个问题貌似很深奥,等待大神帮你解答吧
回复 使用道具 举报
神之梦 发表于 2013-8-16 23:55
这个问题貌似很深奥,等待大神帮你解答吧

嘿嘿,谢谢!{:soso_e112:}
回复 使用道具 举报
问题的表达有点让人弄不清楚,但是有一点可以说一下,编译时看数据类型,运行时看实际对象,
也就是说:
一个父类引用变量指向它的子类的对象,编译时JVM会到父类中看有没有要调用的方法;而运行时,由于动态绑定,会调用子类中相应的方法。
回复 使用道具 举报
简单一句话,非静态方法编译看左边,运行看右边,也就是说父类引用指向子类对象时,调用子类重写的方法运行的是子类的方法(右边),但静态方法编译和运行都看左边
回复 使用道具 举报
Fu f = new Zi();

在多态中,非静态成员函数特点

在编译时期:参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有,编译失败。

在运行时期:参阅对象所属的类中是否有调用的方法。

总结就是,成员函在多态调用时,编译看左边,运行看右边。

成员变量的特点:

无论编译和运行,都参考左边,即引用型变量所属的类。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马