- 一个类中如果没有定义构造方法,默认有一个无参构造方法,其结构如下:
public 类名(){
super();//该行代码必须放在有效代码行的第一行;调用父类无参构造方法
}
- this([参数列表])调用本类构造方法,但必须放在有效代码行的第一行。所以一个构造方法中如果已经调用了本类构造方法,则该构造方法不能直接调用父类构造方法
- 如果子类构造方法没有调用本类构造方法,也没有指定调用父类构造方法,则默认调用父类无参构造方法;
public Son() { //super();//默认有该行代码 System.out.println("子类构造方法"); }
- 父类构造方法对子类构造方法的影响总结:
- 如果子类构造方法没有调用本类构造方法,也没有指定调用父类构造方法,则默认调用父类无参构造方法(无论隐式的还是显式的)。
public Son() { //super();//默认有该行代码 System.out.println("子类构造方法"); }
- 如果父类没有无参构造方法(无论隐式的还是显式的),则要求子类构造方法必须直接或间接指定调用父类哪个构造方法并且放在有效代码第一行,如果不指定调用父类构造方法则会报错。
public class Father{ public Father(String name) { } } package siriusbbbb; public class Son extends Father{ public Son(String name) { super(name);//直接调用 } }