Java 为什么在这个程序中首先执行超类——尽管我没有main方法?

Java 为什么在这个程序中首先执行超类——尽管我没有main方法?,java,oop,inheritance,constructor,super,Java,Oop,Inheritance,Constructor,Super,当我运行以下代码时: public class Employee extends Person { public Employee() { this("Employee call 1"); System.out.println("Employee call 2"); } public Employee(String s) { System.out.println(s); } } public class Person

当我运行以下代码时:

public class Employee extends Person
{ 
   public Employee()
   {
       this("Employee call 1");
       System.out.println("Employee call 2");
   }
   public Employee(String s)
   {
    System.out.println(s); 
   }
}

public class Person
{
   public Person()
   {
     System.out.println("Person call");
   }
}

public class Faculty extends Employee
{
  public static void main(String[] args)
  { 
    new Faculty();
  }
  public Faculty()
  {
    System.out.println("Faculty call");
  }
}
我得到以下输出:

私人电话

员工电话1

员工电话2

教师电话

我想知道为什么它先打印超类内容,然后打印下一个子类,然后打印下一个子类,尽管我在Faculty子类中有main方法。你能告诉我它是怎么追踪的吗


谢谢。

在处理继承时,总是由父类的类构造函数执行,而不管您的实例是否用于子类

在处理继承时,总是由父类的类构造函数执行,而不管您的实例是否用于子类

您应该对继承概念进行一些研究。请注意,对于
Java
中的每个类,在构造函数的开头都有一个对
super
的隐式调用。这是否回答了您的问题?此继承主题名为“继承链”,您可以在google上搜索以更好地理解它。您应该对继承概念进行一些研究。请注意,在构造函数的开始处,
Java
中的每个类都有一个对
super
的隐式调用。这是否回答了您的问题?此继承主题名为“继承链”,您可以在google上搜索以更好地了解它。执行
对象
和类本身之间层次结构中每个类的构造函数,从
Object
开始。从
Object
开始,执行
Object
和类本身之间层次结构中每个类的构造函数。