不要在jvm中调试或运行,你能告诉我输出是什么吗?

时间:2011-06-24 17:12:06

标签: java jvm

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();
    }

}

2 个答案:

答案 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方法隐藏了超类中的一个)