第一题:
class A{
int num=2;
}
public class B extends A{
int num=3;
public static void main(String[] args) {
A a=new B();
System.out.println(a.num );
}
}
运行结果是:2
第二题:
class Super
{
int i=0;
public Super(String a)
{
System.out.println("A");
i=1;
}
public Super()
{
System.out.println("B");
i+=2;
}
}
class Demo extends Super
{
public Demo(String a)
{
System.out.println("C");
i=5;
}
public static void main(String[] args)
{
int i=4;
Super d=new Demo("A");
System.out.println(d.i);
}
}
运行结果是:B C 5
问题:为什么第二题的运行结果不是:B C 0 呢?在多态中成员变量的特点:无论编译还是运行都是参考引用型变量所属的类。
这两道题是不是矛盾呀?有点不理解。求解!
|
|