//父类
public class Parent {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// public Parent(){
// System.out.println("父类无参构造函数");
// }
public Parent(String name){
System.out.println("父类有参构造函数");
}
}
public class Parent {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// public Parent(){
// System.out.println("父类无参构造函数");
// }
public Parent(String name){
System.out.println("父类有参构造函数");
}
}
//子类
public class Son extends Parent{
public Son(){
super("123");
System.out.println("..");
System.out.println("子类无参构造函数");
}
public Son(String name){
super("123");
System.out.println("...");
System.out.println("子类有参构造函数");
}
}
当new一个子类对象时,会调用子类的构造函数(根据有无参数选择调用有参或者无参构造函数),在子类的构造函数中,其实第一条语句默认会执行super();这条语句调用父类的无参构造函数(因为会继承父类的变量,所以有必要调用其构造函数,因为有可能构造函数内会对其变量进行初始化),如果父类的无参构造函数不存在就会出现编译时错误(如果父类手动重写了一个有参构造函数,那么就不存在默认的无参构造函数了,也需要再显示写一个)。但是可以手动写super(参数...)调用父类的有参构造函数,这样只要父类有对应的构造函数就不会报错了。