无参构造器

1、子类没有构造函数时,自动调用父类的无参构造函数

public class Animal {
    Animal(){
        System.out.println("Animal NoArgsConstructor");
    }

    Animal(int a){
        System.out.println("Animal args construction");
    }
}

public class Bird extends Animal {
    public static void main(String[] args) {
        Animal animal = new Bird();
    }
}

运行结果:Animal NoArgsConstructor

2、子类显示指定构造函数时,也会自动调用父类构造方法

public class Bird extends Animal {
    Bird() {
        System.out.println("Bird NoArgsConstructor");
    }

    public static void main(String[] args) {
        Animal animal = new Bird();
    }
}

class Animal {
    Animal(){
        System.out.println("Animal NoArgsConstructor");
    }

    Animal(int a){
        System.out.println("Animal args construction");
    }
}

运行结果:Animal NoArgsConstructor
Bird NoArgsConstructor

3、父类没有无参构造函数时,子类缺省无参构造函数或者指定无参构造函数都会报错

报错情况1:

public class Bird extends Animal {
    Bird() {
        System.out.println("Bird NoArgsConstructor");
    }

    public static void main(String[] args) {
        Animal animal = new Bird();
    }
}

class Animal {

    Animal(int a){
        System.out.println("Animal args construction");
    }
}

报错情况2:

public class Bird extends Animal {
    
    public static void main(String[] args) {
        Animal animal = new Bird();
    }
}

class Animal {

    Animal(int a){
        System.out.println("Animal args construction");
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容