为什么不调用Cups类的构造函数?

时间:2018-06-22 04:58:17

标签: java

我得到了所有的东西,除了为什么没有在其中调用构造函数。

class Cup {

    Cup(int marker) {
        System.out.println("Cup(" + marker + ")");
    }

    void f(int marker) {
        System.out.println("f(" + marker + ")");
    }
}

class Cups {

    static Cup cup;
    static Cup cup2;

    static {
        cup = new Cup(1);
        cup2 = new Cup(2);
    }

    Cups() {
        System.out.println("Cups()"); // why this is not called
    }
}

public class order3 {
    public static void main(String[] args) {
        System.out.println("Inside main()");
        Cups.cup.f(99); // (1)
    }
}

输出为:

Inside main()
Cup(1)
Cup(2)
f(99)

1 个答案:

答案 0 :(得分:0)

这是因为您尚未创建Cups类的实例。仅当您使用新的按键创建实例时,才会调用构造函数。例如.. Cups cup = new Cups();

在这里,您只是在使用Cups类的静态对象。因此,在Cups类的静态块中,您创建了Cup类的实例,这就是为什么调用Cup类的构造方法和方法的原因。

希望您能理解这个概念。

谢谢