某公司的人员分为员工和经理两种,但经理也属于员工中的一种,公司的人员都有自己的姓名和地址,员工和经理都有自己的工号、工资、工龄等属性,但经理不同员工的是,经理有自己在公司对应的级别。假设每次给员工涨工资一次能涨10%,经理能涨20%。 要求利用多态实现给员工和经理涨工资。
时间: 2024-12-29 21:33:41 浏览: 8
在使用多态实现这样的场景时,我们可以创建一个Employee(员工)类作为基础类,然后派生出Manager(经理)类。两者都继承自相同的父类并共享一些通用属性如姓名、地址、工号和工龄。对于特定属性,如工资和级别,我们可以在各自类中定义。同时,我们创建一个涨价方法(salaryIncrease)作为抽象方法,在Employee类中实现涨10%,而在Manager类中实现涨20%。
这是一个简单的示例,用Java来表示:
```java
abstract class Employee {
String name;
String address;
int id;
int workYears;
abstract double salaryIncrease(double currentSalary); // 抽象方法
// 其他共有的getter和setter方法
}
class Manager extends Employee {
int level;
@Override
double salaryIncrease(double currentSalary) {
return currentSalary * 1.2; // 经理涨20%
}
}
class Staff extends Employee {
@Override
double salaryIncrease(double currentSalary) {
return currentSalary * 1.1; // 员工涨10%
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
Manager manager = new Manager();
manager.setName("John");
manager.setAddress("New York");
manager.setId(1);
manager.setWorkYears(5);
manager.setLevel(3);
System.out.println("Manager's salary before increase: " + manager.getSalary());
manager.salaryIncrease(); // 调用Manager类的涨工资方法
System.out.println("Manager's salary after increase: " + manager.getSalary());
Staff staff = new Staff();
staff.setName("Alice");
staff.setAddress("San Francisco");
staff.setId(2);
staff.setWorkYears(3);
System.out.println("Staff member's salary before increase: " + staff.getSalary());
staff.salaryIncrease(); // 调用Staff类的涨工资方法
System.out.println("Staff member's salary after increase: " + staff.getSalary());
}
}
```
阅读全文