java - 为什么父类(super class)在这个程序中首先被执行 - 尽管我没有 main 方法?

标签 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 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

教师电话

我想知道为什么它打印父类(super class)内容,然后打印下一个子类,然后打印下一个子类,尽管我在Faculty子类中有main方法。你能告诉我它是如何追踪的吗?

谢谢。

最佳答案

使用继承时,无论您的实例是否用于子类,始终都会执行父类的类构造函数。

关于java - 为什么父类(super class)在这个程序中首先被执行 - 尽管我没有 main 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60212640/

相关文章:

java - 在使用自定义 AppenderBase 类的 Logback 中以及如何将通知发送回 Swing gui

java - 无法理解 Java 算法中的执行顺序(k= 和++k)

java - SpringBoot @WebMvcTest 安全问题

python - python 中的自语法

java - 将关系转换为面向对象的最佳方法是什么?

java - 将简单的 Applet GUI 从 Swing 转换为 JavaFX

c++ - 防止继承类覆盖基类的虚函数

php - 接口(interface)可以扩展其他类吗?

c++ - 如何循环遍历 vector 并调用通用覆盖函数?

java - 方法覆盖-C# vs java