黑马程序员技术交流社区

标题: 多态中的问题 [打印本页]

作者: 安阳    时间: 2013-8-16 23:40
标题: 多态中的问题
多态中为非静态成员方法在编译跟运行时会有差别么,具体是怎么个运行机制?求解

作者: 神之梦    时间: 2013-8-16 23:55
这个问题貌似很深奥,等待大神帮你解答吧
作者: 安阳    时间: 2013-8-17 00:17
神之梦 发表于 2013-8-16 23:55
这个问题貌似很深奥,等待大神帮你解答吧

嘿嘿,谢谢!{:soso_e112:}

作者: 焦允    时间: 2013-8-17 01:03
问题的表达有点让人弄不清楚,但是有一点可以说一下,编译时看数据类型,运行时看实际对象,
也就是说:
一个父类引用变量指向它的子类的对象,编译时JVM会到父类中看有没有要调用的方法;而运行时,由于动态绑定,会调用子类中相应的方法。
作者: 毛恩奇    时间: 2013-8-17 01:16
简单一句话,非静态方法编译看左边,运行看右边,也就是说父类引用指向子类对象时,调用子类重写的方法运行的是子类的方法(右边),但静态方法编译和运行都看左边
作者: jrry    时间: 2013-8-18 10:08
Fu f = new Zi();

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

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

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

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

成员变量的特点:

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2