在HourlyEmployee和SalariedEmployee子类中,我们调用super()
将“name”传递给基类构造函数。我有两个问题:继承和私有变量
变量名称来自哪里,这是aName变量的拼写错误吗?
调用
setSalary()
如何在这些子类中工作?
是否延长Employee类为我们提供了setSalary()
方法的副本,但随后的方法中有aSalary=salary;
,其中工资是不能继承的,因为它是私人或不继承干脆让我们用setSalary()
方法从基这就是为什么使用super()
来传递名称的原因。
public class Employee {
private String name;
private double salary;
public Employee(String aName) {
name = aName;
}
public void setSalary(double aSalary) {
salary = aSalary;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public double getWeeklySalary() {
return salary/52;
}
}
public class HourlyEmployee extends Employee {
public HourlyEmployee(String aName, double anHourlySalary) {
super(name);
setSalary(anHourlySalary*40*52);
}
}
public class SalariedEmployee extends Employee {
public SalariedEmployee(String aName, double anAnnualSalary) {
super(name);
setSalary(anAnnualSalary);
}
}
你没有通过任何超级(名称)。你应该通过超级(aName)。 – solvator