当我们在调用类的构造器来创建对象的时候,首先要调用的是父类的非静态的初始化块,接着会调用构造器,但是父类的构造器可能有多个,也就是重载,当调用完父类的非静态初始化块之后,将会调用的是当前类的非静态初始化块然后是自身的构造函数,调用父类的构造函数就有两种调用的方式,一个是显示调用,另一个是隐式调用,下面通过代码来说一下这两者间的区别。
class Person {
public Person (){
}
public Person (String name){
system.out.println(name);
}
}
class Student extends Person {
public Student{
super ("IT90s最前线");
}
public Student{
this();
}
public Student{
}
}
了解了这段代码的输出情况,你也就是了解了显示调用和隐式调用,这里出现的关键字super,super调用用于显示调用父类的构造器,this则用来显示调用本类中的另一个重载的构造器,这两种构造器只能在构造器中使用,而且出现在构造函数的第一行代码中,因此构造器中两种关键字只能用其中一个,而且每个只能调用一次。