父类构造器

当调用某个类的构造器来创建java对象时,系统总会先调用父类的非静态初始化块进行初始化,接着会调用父类的一个或多个构造器执行初始化。super调用和this调用都必须作为
构造器的第一行代码,因此它们调用时只能使用其中之一,且最多只能调用一次。

class Creature{
    {
        System.out.println("Creature的非静态初始化代码快");
    }
    public Creature(){
        System.out.println("Creature的无参构造器");
    }
    public Creature(String name){
        //使用this调用另一个重载的无参的构造器
        this();
        System.out.println("Creature的有参构造器"+name);
    }
    public Creature(String name,int age){
        //使用this调用另一个重载的无参的构造器
        this();
        System.out.println("Creature的有参构造器"+name);
    }
}
class Animal extends Creature{
    {
        System.out.println("Animal的非静态初始化代码快");
    }
    public Animal(String name) {
        super(name);
        // TODO Auto-generated constructor stub
        System.out.println("Animal的带有一个参数的构造器"+name);
    }
    public Animal(String name,int age) {
        this(name);
        // TODO Auto-generated constructor stub
        System.out.println("Animal的带有一个参数的构造器"+name);
    }
    
    
}
class Wolf extends Animal{
    
    {
        System.out.println("Wolf的非静态初始化代码快");
    }
    
    public Wolf(String name,double weight) {
        super("大尾巴狼",6);
        
        // TODO Auto-generated constructor stub
        System.out.println("wolf的无参构造器"+weight);
    }

}
class BianDemo{
    public static void main(String[] args) {
        new Wolf("大灰狼",5.6);
    }
}

执行构造方法时取决于this调用super调用,如果没有这两个调用,系统就会默认调用无参的构造方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本章将会介绍 存储属性的初始赋值自定义构造过程默认构造器值类型的构造器代理类的继承和构造过程可失败构造器必要构造器...
    寒桥阅读 4,130评论 0 0
  • 构造过程 构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例可用前必须执行这个过程,具体操作包括设置...
    蛊毒_阅读 4,030评论 0 2
  • 农村人的许多福利城里人得花大价钱才能享受到,这点让我这个农村人很是得意。比如阡陌交通走着走着就碰到了俨然长者...
    真水无香20533阅读 1,586评论 0 0
  • 美院今年真是站在了风口浪尖的位置上了,也算是过的不平静。 美院向来是缺少一个危机意识的地方,无论是某些学生还是一些...
    Cisa阅读 1,417评论 1 0
  • 淅淅沥沥的秋雨,下得甚欢。天虽有点灰蒙蒙,但听着雨点敲击路面的声音,生活就自然有了阳光。阳光自在,在心头。...
    李水阅读 3,362评论 0 3