黑马程序员技术交流社区

标题: 求目测运行结果 [打印本页]

作者: 吴凯    时间: 2013-4-29 09:54
标题: 求目测运行结果
本帖最后由 吴凯 于 2013-5-1 01:37 编辑

package pkg1;

public class Jupiter{
void method1(){
System.out.println("In Jupiter");
}
public void call(){
method1();
}
}

package pkg2;

import pkg1.Jupiter;

public class Minerva extends Jupiter{
public void method1(){
System.out.println("In Minerva");
}

public static void main(String[] args) {
new Minerva().call();
}
}



作者: 殇_心。    时间: 2013-4-29 10:02
System.out.println("In Minerva");
作者: 袁梦希    时间: 2013-4-29 10:32
目测的结果肯定是  In Minerva  
但是这道题你仔细目测其实这两个类不是在同一个包中,所以运行时调用父类的方法了,子类的方法被掩盖了,打印 In Jupiter

作者: 赵崇友    时间: 2013-4-29 10:53
目测是:In Jupiter
作者: 吴建昆    时间: 2013-4-29 15:07
new Minerva().call() 调用父类的call()方法,继而运行call()方法中的method1();
此时,父类Jupiter中有method1()方法,它就不会去找其它的了,就会运行父类中的
void method1(){
System.out.println("In Jupiter");
}
所以输出结果应该是In Jupiter吧 我是这样分析的,不知道对不对。
作者: 花开花落总相似    时间: 2013-4-29 16:04
  目测调用的是父类的中的方法 结果是In Jupiter
作者: 吴凯    时间: 2013-4-29 21:56
各种高手啊
作者: 黄玉昆    时间: 2013-4-29 23:04
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
作者: Sword    时间: 2013-4-30 01:40
目测调用的是父类的中的方法
所以结果应该是是In Jupiter,
不对请指正,谢谢了{:soso_e100:}
作者: 符立波    时间: 2013-4-30 10:17
本帖最后由 符立波 于 2013-4-30 10:21 编辑

貌似内存中只有一个new Minerva()的对象




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