package Test;
public class A {
public A() {
System.out.println("Enter construct A...");
init();
}
public void init() {
System.out.println("Enter A's init...");
}
}
package Test;
public class B extends A {
int i = 0;
int j;
public void init() {
System.out.println("Enter B's init...");
i = 100;
j = 100;
}
public void printAll(){
System.out.println(i);
System.out.println(j);
}
/**
* @param args
*/
public static void main(String[] args) {
B b = new B();
b.printAll();
}
}
答案 0 :(得分:0)
好的,新B首先获得一个A get创建的第一个实例字段,然后调用B的init()将i和j设置为100.然后创建B,将i初始化为0.
Enter construct A...
Enter B's init...
0
100
答案 1 :(得分:0)
我想:
Enter construct A...
Enter B's init...
100
100
因为必须调用A构造函数,所以可以构造bevore B. 因为你要实例化的类来自类型B,所以调用B的init(没有super.init()调用,所以B类的init方法隐藏了超类中的一个)