父类构造函数与子类构造函数的关系

//父类
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(参数...)调用父类的有参构造函数,这样只要父类有对应的构造函数就不会报错了。




猜你喜欢

转载自blog.csdn.net/qq646040754/article/details/80462270