在Java继承中,经常会碰上super()方法,今天恰好碰上,小小的研究了一下。
在子类的构造方法的第一行,必须是第一行调用super(),这样就调用了父类的构造方法,如果父类有多个不同的构造方法,则根据调用super()时传入的参数调用相应的父类构造方法。
public class Father {
public Father() {
System.out.println("Father的无参构造方法");
}
public Father(int i) {
System.out.println("Father的有参构造方法" + i);
}
}
class Son extends Father {
public Son() {
//super(2); //此时调用Father(int i)方法
super(); //此时调用Father()方法。其实这里不写super()也可以起到同样的作用,因为Java在调用子类构造方法时默认调用父类的无参构造方法,不过这两种可行的前提是父类中还留有无参构造方法。
System.out.println("Son的无参构造方法");
}
}
顺便记录下关于Java继承中构造方法的一些东西:
在调用子类构造方法时,不管调用的是有参还 是无参,如果没有在第一行调用super(var xx),都会默认先调用父类的无参构造方法。
如果父类中没有无参构造方法,子类中的构造方法则必须调用super(var xx),否则会报错。