这个是反映类加载的顺序:就拿不注释this("thdemployee");这样情况来说。 public static void main(String[] args) { new Faculty(); } 1.在程序的入口main方法中,初始化一个Faculty类的实例,初始化的时候先要调用构造方法 public Faculty() { System.out.println("Faculty"); } 2.但是Faculty这个类继承了Employee类,所以先要把父类加载,故先调用Employee类的构造方法。 public Employee() { this("thdemployee"); System.out.println("emplouee"); } 3.在调用Employee类的构造方法的时,又因为Employee继承了Person类,所以先调用Person的构造方法。 public Person() { System.out.println("Person"); } 4.person类没有继承其他自定义类(继承了Object类),故执行打印语句输出 Person 5.person执行完成后开始执行其之类Employee类的构造方法: a. this("thdemployee");//调用public Employee(String s)执行打印语句,输出thdemployee b. 再执行System.out.println("emplouee");这句,打印 emplouee 6.Employee构造方法执行完成后回到其子类Faculty,并执行构造方法,打印 Faculty加载之类的时候,要先加载它的父类,所以最上层的类的构造方法要先执行,故打印记过为: Person thdemployee emplouee Faculty
public static void main(String[] args)
{
new Faculty();
}
1.在程序的入口main方法中,初始化一个Faculty类的实例,初始化的时候先要调用构造方法
public Faculty()
{
System.out.println("Faculty");
}
2.但是Faculty这个类继承了Employee类,所以先要把父类加载,故先调用Employee类的构造方法。
public Employee()
{
this("thdemployee");
System.out.println("emplouee");
}
3.在调用Employee类的构造方法的时,又因为Employee继承了Person类,所以先调用Person的构造方法。
public Person()
{
System.out.println("Person");
}
4.person类没有继承其他自定义类(继承了Object类),故执行打印语句输出 Person
5.person执行完成后开始执行其之类Employee类的构造方法:
a. this("thdemployee");//调用public Employee(String s)执行打印语句,输出thdemployee
b. 再执行System.out.println("emplouee");这句,打印 emplouee
6.Employee构造方法执行完成后回到其子类Faculty,并执行构造方法,打印 Faculty加载之类的时候,要先加载它的父类,所以最上层的类的构造方法要先执行,故打印记过为:
Person
thdemployee
emplouee
Faculty
首先,子类构造方法中this()和super()只能出现一次;
这两个方法都放在构造方法的第一句;
看书的仔细,多次看