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

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");
    }
}

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

最佳答案

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

这个构造函数:

public ConstractorDemo(){
    System.out.print("Demo");
}

等效于:
public ConstractorDemo(){
    super (); // prints A
    System.out.print("Demo"); // prints Demo
}

关于java - 首先执行哪个,父或子构造函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34491335/

10-09 04:51