重写父类的年工资计算的方法 定义测试类,包含: main方法;showAnnualWage方法:用来获取任何员工对象的年工资,
时间: 2024-03-24 19:36:43 浏览: 17
好的,根据你的要求,我为你编写了Java代码如下:
```
// 职工类
class Employee {
private String name; // 姓名
private double monthlySalary; // 月工资
public Employee(String name, double monthlySalary) {
this.name = name;
this.monthlySalary = monthlySalary;
}
public double getAnnualWage() {
return monthlySalary * 12;
}
}
// 普通员工类
class OrdinaryEmployee extends Employee {
public OrdinaryEmployee(String name, double monthlySalary) {
super(name, monthlySalary);
}
public void work() {
System.out.println("我是普通员工,正在工作...");
}
@Override
public double getAnnualWage() {
return super.getAnnualWage() + 10000; // 普通员工年终奖10000元
}
}
// 经理类
class Manager extends Employee {
public Manager(String name, double monthlySalary) {
super(name, monthlySalary);
}
public void manage() {
System.out.println("我是经理,正在管理...");
}
@Override
public double getAnnualWage() {
return super.getAnnualWage() + 50000; // 经理年终奖50000元
}
}
// 测试类
public class Test {
public static void main(String[] args) {
// 创建普通员工对象
OrdinaryEmployee oe = new OrdinaryEmployee("张三", 5000);
oe.work();
System.out.println("普通员工年工资:" + oe.getAnnualWage());
// 创建经理对象
Manager m = new Manager("李四", 10000);
m.manage();
System.out.println("经理年工资:" + m.getAnnualWage());
// 调用showAnnualWage方法
showAnnualWage(oe);
showAnnualWage(m);
}
// 获取任何员工对象的年工资
public static void showAnnualWage(Employee e) {
System.out.println(e.getClass().getSimpleName() + " " + e.getAnnualWage());
}
}
```
在测试类中,我们创建了一个普通员工对象和一个经理对象,并分别调用了它们的work和manage方法以及重写的getAnnualWage方法,然后我们又定义了一个showAnnualWage方法,可以获取任何员工对象的年工资。通过这个方法,我们可以方便地获取员工的年工资,而无需知道具体是哪种类型的员工。