在构造函数中调用另一个构造函数
直接贴代码:
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,调用该类的其他构造器(调用超类的构造器)