假如有Emploee类和Manager类定义如下:
public class Employee public class Manager extends Employee
{ {
...... ......
public double getSalary() public double getSalary()
{ {
return salary; 如何实现?接着往下看
} }
private double salary; private double salary;
} private double bonus;
}
Manager类继承了Emplyee类,Employee为超类,Manager为子类。
如何实现Manager类中的getSalary()函数呢?需要覆盖超类中的getSalary函数。
1.return salary+bonus; 错误。子类中的成员函数不能访问超类中的私有域。在java中只有实例方法是动态绑定的,静态方法、成员变量都属于静态绑定。所以,Manager中的成员变量salary是Employee类的私有域。
2.double baseSalary=getSalary();return baseSalary+bonus; 错误。此处的调用的getSalary函数是Manager中的函数,即属于递归调用。
3.double baseSalary=super.getSalary(); return baseSalary+bonus; 正确。super是一个指示编译器调用超类方法的特定关键字。