父类构造器

当调用某个类的构造器来创建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调用,如果没有这两个调用,系统就会默认调用无参的构造方法。

你可能感兴趣的:(父类构造器)