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
和类本身之间层次结构中每个类的构造函数。