黑马程序员技术交流社区
标题:
遇到一道多态题,自己有点乱
[打印本页]
作者:
jinxiaodong
时间:
2016-1-4 19:57
标题:
遇到一道多态题,自己有点乱
class B {
public void show() {
show2();
}
public void show2() {
System.out.println("B的方法");
}
}
class C extends B {
public void show() {
super.show();
}
public void show2() {
System.out.println("C的方法");
}
}
public class Demo8 {
public static void main(String[] args) {
B b = new C();
b.show();
}
}
复制代码
代码如上,按我自己分析结果应该是"B的方法",实际运行的结果是"C的方法"。对照结果,我大概能推测出来过程,可是不够清晰,想看看大家是怎么理解。
作者:
Lewisky
时间:
2016-1-5 11:30
C c = new C();
作者:
Lewisky
时间:
2016-1-5 11:34
向上转型的过程 将C的对象赋值给B的引用
作者:
Lewisky
时间:
2016-1-5 11:38
发生向上转型后,调用这种被子类覆写过的方法
作者:
android1.0
时间:
2016-1-9 22:56
口诀:多态时,父类引用指向子类对象,对于非静态方法,编译时看的是父类,运行时走的是子类
作者:
793646122@qq.co
时间:
2016-1-11 17:41
面试经常出这种题
作者:
13653692693
时间:
2016-1-12 15:13
哎有点头大
作者:
苗超维
时间:
2016-1-22 21:13
编译看左边 运行看右边
作者:
WosLovesLife
时间:
2016-1-22 22:17
这种代码你自己debug一下跟着系统一步步走就知道了.很简单.
作者:
liuzegang
时间:
2016-2-7 23:32
多态调方法,编译看左边,运行看右边。因为class B继承了class C,而class C 中 show()又调了show2(),class B 中有show2(),根据运行看右边,所以打出的是clss B 中 show2()的方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2