我已将此代码放入编译器中
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
类)之前执行。这就是为什么A
在Demo
之前打印的原因。
这个构造函数:
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/