我得到了所有的东西,除了为什么没有在其中调用构造函数。
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)
答案 0 :(得分:0)
这是因为您尚未创建Cups类的实例。仅当您使用新的按键创建实例时,才会调用构造函数。例如.. Cups cup = new Cups();
在这里,您只是在使用Cups类的静态对象。因此,在Cups类的静态块中,您创建了Cup类的实例,这就是为什么调用Cup类的构造方法和方法的原因。
希望您能理解这个概念。
谢谢