在构造函数中调用另一个构造函数

直接贴代码:

package source;

public class Hero {
    private int hp;
    private double damage;
    private String name;
    
    Hero(String name){
        this.name = name;
    }
    
    Hero(String name,int hp,double damage){
        this(name);
        this.hp = hp;
        this.damage = damage;
    }
    
    public void setHp(int hp) {
        this.hp = hp;
    }
    public int getHp() {
        return hp;
    }
    public static void main(String[] args) {
        Hero h = new Hero("garren",10,1.1);
    }
}

优点:公共的构造器代码只需要编写一次,提高复用性

下面我们来看子类调用父类的构造函数

public Manager(String name,double salary,double bonus){
    super(name,salary);
    this.bonus = bonus;
}

注意:

1,使用super调用超类构造器的语句必须是子类构造器的第一条语句。

2,如果子类的构造器没有显式地调用超累的构造器,则自动调用超类默认(没有参数)的构造器。如果超类没有不带参数的构造器,在子类中又没有显式调用超类的其他构造器,那么Java编译器将报错。

3,被调用的父类的该构造器必须被public或protected修饰

 

this和super都用类似的两个用法:

1,引用隐式参数(调用超类方法)

2,调用该类的其他构造器(调用超类的构造器)

 

posted @ 2019-10-29 16:58  Joey777210  阅读(1950)  评论(0编辑  收藏  举报