哪个先执行,父构造函数还是子构造函数?

6 java inheritance constructor

我已将此代码放入编译器中

package com.employer.constractor;

public class ConstractorDemo extends A{
    public ConstractorDemo(){
        System.out.print("Demo");
    }
    public static void main(String[] args){
        new ConstractorDemo();
    }
}

class A {
    A(){
        System.out.print("A");
    }
}
Run Code Online (Sandbox Code Playgroud)

它给了“ADemo” 为什么? 对于这种情况,我将不胜感激,并会提到编译器将如何处理这个问题

Era*_*ran 5

基类(您的情况下的类)的构造函数始终在您正在实例化的类(您的情况下的A类)的构造函数之前执行。ConstractorDemo这就是为什么A之前打印的原因Demo

这个构造函数:

public ConstractorDemo(){
    System.out.print("Demo");
}
Run Code Online (Sandbox Code Playgroud)

相当于:

public ConstractorDemo(){
    super (); // prints A
    System.out.print("Demo"); // prints Demo
}
Run Code Online (Sandbox Code Playgroud)