在默认构造函数之前执行的方法

这个问题在这里已经有了答案:

  • 在Java中运行构造函数代码之前,字段是否已初始化? 4个答案

  • 实例变量初始化表达式,如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

    上一篇: Method executed prior to Default Constructor

    下一篇: Unicode escaped comments in Python