1、 一个类中如果没有定义构造方法,那么会有一个默认的无参构造方法
public 类名(){
super(); //super()只能放在有效代码行第一行
}
2、子类中的构造方法如果没有调用本类的构造方法或者没有明确使用父类中的构造方法,则**使用super()**调用父类中默认的无参构造方法,如果父类中没有无参方法时,必须指明调用父类中的哪个构造方法
例如:
package javalearn;
//父类
public class Hello {
public Hello(int a) {
super();//用来调用Hello类的父类Object中的构造函数
System.out.println("父类");
}
}
//子类
public class World extends Hello {
public World() {
this(1);//调用本类中的有参构造函数
System.out.println("子类");
}
public World(int a) {
super(1);//用来调用父类中的有参构造函数
System.out.println("子类");
}
}
public class Test{
public static void main(String[] args) {
new World(); //用本类的无参构造函数
}
}
输入如下:
3、this()(用来调用本类中的某个构造方法)和super() (用来调用父类的某个构造方法)不能同时在一个方法中使用