看下面的代码,选择正确的结论:
class SuperClass
{
int i=8 ;
SuperClass()
{
add(1);
}
void add(int j)
{
i=i+j;
}
}
class SubClass extends SuperClass
{
int i=8;
void add(int j)
{
i=i+2*j;
}
}
public class MainClass
{
public static void main(String args[])
{
SuperClass a=new SubClass();
System.out.println(a.i);
}
}
A 、编译时出现错误 B、运行时出现错误
C、输出 10 D、输出 8
我的理解:子类先去调用父类构造函数,然后执行add(1);执行的是子类中重写的函数。所以得出结果是10.
但是答案是D,为什么是8呢??? |
|