用父类方法的重写:设计一个基类employee,包含属性name,salary和calculatebonus,创建两个派生类manager和staff,重写calculatebonus方法以根据不同的规则计算奖金
时间: 2024-10-25 11:10:28 浏览: 17
在面向对象编程中,通过父类方法的重写(也称为覆盖或重写)是一种多态的重要体现。假设我们有一个名为`Employee`的基础类,它有以下几个成员:
```java
public class Employee {
private String name;
private double salary;
public Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}
// 父类方法
public double calculateBonus() {
return salary * 0.1; // 默认的奖金比例
}
// 其他方法...
}
```
然后,我们可以创建两个派生类`Manager`和`Staff`,它们继承自`Employee`并重写`calculateBonus`方法,以反映各自的奖金计算规则:
```java
public class Manager extends Employee {
public Manager(String name, double salary) {
super(name, salary);
}
@Override
public double calculateBonus() {
return salary * 0.15; // 经理通常有更多的奖金
}
}
public class Staff extends Employee {
public Staff(String name, double salary) {
super(name, salary);
}
@Override
public double calculateBonus() {
return salary * 0.07; // 员工的奖金比例较低
}
}
```
现在,如果你有一个`Employee`类型的引用,并且这个引用指向的是`Manager`或`Staff`实例,当你调用`calculateBonus()`方法时,将分别执行各自类中重写后的计算方式。
阅读全文