子类调用父类构造器的几种情况

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Abel_Liujinquan/article/details/89422543

在调用子类构造器之前,会先调用父类构造器,当子类构造器中没有使用"super(参数或无参数)"指定调用父类构造器时,是默认调用父类的无参构造器,如果父类中包含有参构造器,却没有无参构造器,则在子类构造器中一定要使用“super(参数)”指定调用父类的有参构造器,不然就会报错。

示例:
由于父类Base没有无参构造器,所以Derived必须显式地调用Base的有参构造器,不然会报错。

class Base{
    public Base(String s){
        System.out.print("B");
    }
}
public class Derived extends Base{
    public Derived (String s) {
    	//正确的方式需要添加一行:
    	//super(s);
        System.out.print("D");
    }
    public static void main(String[] args){
        new Derived("C");
    }
}

猜你喜欢

转载自blog.csdn.net/Abel_Liujinquan/article/details/89422543