class Base
{
public final static int i = 2;
public Base()
{
this.display();
}
public void display()
{
System.out.println("base i"+i);
}
}class Derived extends Base
{
private int i = 22;
public Derived()
{
i = 222;
}
public void display()
{
System.out.println("derived i:"+i);
}
}public class Test
{
public static void main(String [] args)
{
new Derived();
}
}
输出为什么是derived i:0,为什么执行的是子类的display方法,i为什么是0 呢,解释一下执行顺序吧?
{
public final static int i = 2;
public Base()
{
this.display();
}
public void display()
{
System.out.println("base i"+i);
}
}class Derived extends Base
{
private int i = 22;
public Derived()
{
i = 222;
}
public void display()
{
System.out.println("derived i:"+i);
}
}public class Test
{
public static void main(String [] args)
{
new Derived();
}
}
输出为什么是derived i:0,为什么执行的是子类的display方法,i为什么是0 呢,解释一下执行顺序吧?
class Base { public final static int i;
static{
i = 2;
System.out.println("Base static");
} public Base() {
System.out.println("Base 构造方法");
this.display();
} public void display() {
System.out.println("base i" + i);
}
}class Derived extends Base {
private int i;
{
i = 22;
System.out.println("Derived");
} public Derived() {
System.out.println("Derived 构造方法");
i = 222;
} public void display() {
System.out.println("derived i:" + i);
}
}public class Test {
public static void main(String[] args) {
new Derived();
}
}
输出结果为
Base static
Base 构造方法
derived i:0
Derived
Derived 构造方法