1. 构造器的运行
在new一个子类对象的过程中,首先调用父类的构造器,然后调用子类的构造器
2. 构造器的位置
- 子类在构造器中,调用父类的构造器,必须在子类构造器的第一行
public Student() {
super();//调用父类的构造器,必须在子类构造器的第一行
System.out.println("子类构造器");
- 调用自身的构造器(例如,在无参构造器中,调用有参构造器),也必须在构造器的第一行。
所以
在调用构造器时,父类构造器或者子类(本身)构造器,只能选一个,且必须在构造器的第一行。
3. 父类只有参构造器,子类怎么办
-
如果,父类中只有有参构造器,(默认无参构造器失效),
子类使用无参构造器,但是在构造器中需要显式调用父类的有参构造器
public Student() {
super("name");
}
-
或者对上面的父类中增加无参构造器,保证子类中的无参构造器有效(子类的具体情况如下)
父类的无参构造器,如下:
public Person() {
}
如果,子类中没有有参构造器,则在子类中不写构造器也可以,也可只写无参构造器
如果,子类中有有参构造器,则必须在子类中写无参构造器