我正在学习 java,偶然发现了以下代码,其中在方法之后执行了默认构造函数。
public class ChkCons { 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(); } }
输出:
I'm in Method. I'm Default Constructor.
谁能解释一下为什么会这样?
谢谢。
最佳答案
int var = getVal();
等实例变量初始化表达式在执行父类(super class)构造函数之后但在执行当前类构造函数的主体之前求值。
因此 getVal()
在 ChkCons
构造函数的主体执行之前被调用。
关于Java - 在默认构造函数之前执行的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32688650/