子类构造器
现在有两个类,Employee和Manager,其中Employee是父类,Manager是子类
public class Employee{
private String name;
private double salary;
public Employee(String name,double salary){
this.name = name;
this.salary = salary;
}
}
public class Manager extends Employee{
private double bonus;
public Manager(String name,double salary){
super(name,salary);
bonus = 0;
}
}
这里的关键字super具有不同的含义.super(name,salary)是调用父类Employee中含有name和salary参数的构造器的简写形式.
由于Manager类的构造器不能访问Employee类的私有域,所以必须利用Employee类的构造器对这部分私有域进行初始化,我们可以通过super实现对父类构造器的调用.使用super调用构造器的语句必须是子类构造器的第一条语句
如果子类的构造器没有显示地调用父类的构造器,则将自动调用父类默认(没有参数)的构造器.如果父类没有不带参数的构造器,并且在子类的构造器中又没有显示地调用父类的其他构造器,则Java编译器将报错