在默认构造函数之前执行的方法
这个问题在这里已经有了答案:
实例变量初始化表达式,如int var = getVal();
在构造函数执行之前进行评估。 因此,在执行构造函数之前调用getVal()
。
构造函数在方法之前调用。 方法的执行发生在作为对象实例变量评估对象创建的一部分之后。 从以下代码可以更好地理解这一点。
class SuperClass{
SuperClass(){
System.out.println("Super constructor");
}
}
public class ChkCons extends SuperClass{
int var = getVal();
ChkCons() {
System.out.println("I'm Default Constructor.");
}
public int getVal() {
System.out.println("I'm in Method.");
return 10;
}
public static void main(String[] args) {
ChkCons c = new ChkCons();
}
}
以上代码具有以下输出
Super constructor
I'm in Method.
I'm Default Constructor.
这里编译器自动添加super();
作为ChkCons()
构造函数中的第一条语句,因此它在getVal()
方法之前被调用。
每当创建一个类实例的实例时,首先初始化变量,然后执行构造函数
参考:构造函数代码在Java中运行之前是否已初始化字段?
链接地址: http://www.djcxy.com/p/3483.html