这是我的代码:
class Developer{
static{
System.out.println("In static block Developer");
}
Developer(){
System.out.println("In constructor Developer");
}
}
public class Programmer extends Developer{
static{
System.out.println("In static block Programmer");
}
Programmer(){
System.out.println("In constructor Programmer");
}
public static void main(String args[]){
//Different static block when no commented
//Developer d = new Programmer();
}
}
输出是这样的(当main中没有任何内容时):
在静态块中
在静态块编程器中
但是,如果我在主要方法Developer d = new Programmer()中编写,则输出为:
在静态块编程器中
在构造函数中
在构造函数中
不执行类Developer中的静态块。有逻辑上的解释吗?
最佳答案
输出
In static block Developer
应该生成,因为当由类加载器加载
static
时将执行Developer
块关于java - 用空的main和对象初始化在Java中执行的不同静态块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25834027/