【发布时间】:2018-04-17 11:23:08
【问题描述】:
给定以下类层次结构
package pack1;
public class A
{
private int methodOne(int i)
{
return ++i;
}
public int methodTwo(int i)
{
return methodOne(++i);
}
}
package pack2;
import pack1.A;
class B extends A
{
int methodOne(int i)
{
return methodTwo(++i);
}
}
public class MainClass
{
public static void main(String[] args)
{
System.out.println(new B().methodOne(101));
}
}
上述程序的输出是104。 Class B创建自己的methodOn() 版本,因为methodOne() 在Class A 中是private。但是,在运行时,当在methodTwo() 中时,运行时对象的类型为Class B。为什么java 在class A 中使用methodOne() 而不是class B。
【问题讨论】:
-
您可以通过在答案上打勾来批准一个答案作为完全适合您的问题的正确答案。 Marking Tick 表示它是被询问的用户批准的经过验证的答案。
标签: java inheritance access-modifiers overriding