为什么下面程序运行以后那个i是等于5呢,不是4呢
class Super
{
int i=0;
public Super(String a)
{
System.out.print("A");
i=0;
}
public Super()
{
System.out.print("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);
class Super
{
int i=0;
public Super(String a)
{
System.out.print("A");
i=0;
}
public Super()
{
System.out.print("B");
i+=2;
}
}
class Demo extends Super
{
public Demo(String a)
{
//这里会有一条隐式的super()语句去调用父类中无参的构造函数
System.out.println("c");
i=5;
}
public static void main(String[] args)
{
int i=4;
Super d=new Demo("A"); //这句运行后会执行子类中的构造方法而不是去执行父类中的构造方法,
//而子类构造方法中的第一句隐含有super()这条语句会去调用父类中无参的构造方法,、
//故在这里会先打印B,再打印c
System.out.println(d.i); //这里调用的是子类构造方法中的i,故这里会打印5
//System.out.println(i); //这样写才会打印4
}
}