Java题:某公司员工分为5类,每类员工都有相应的封装类,5个信息如下:Employee是所有员工父类。熟悉为姓名,生日月份,方法:getSalary(int month)根据参数月份确定工资,如果过生日,多发100元
时间: 2024-10-20 07:06:35 浏览: 230
在Java中,你可以按照这样的结构设计一个类层次来表示公司的员工分类,并实现多态:
首先,创建一个`Employee`作为父类,它包含共同的属性如姓名和生日月份,以及`getSalary`方法。
```java
public class Employee {
private String name;
private int birthdayMonth;
public Employee(String name, int birthdayMonth) {
this.name = name;
this.birthdayMonth = birthdayMonth;
}
// 定义通用的getSalary方法,基础版只考虑基本工资
public double getSalary(int month) {
if (month == this.birthdayMonth) {
return 100.0 + baseSalary; // 假设baseSalary是每个员工的基础工资
} else {
return baseSalary;
}
}
// 其他可能的父类属性和方法...
}
```
然后,针对每个员工类别,比如Manager、Worker等,可以继承`Employee`类并覆盖或扩展`getSalary`方法:
```java
// Manager类,假设经理有更高的工资
public class Manager extends Employee {
private double baseSalary;
public Manager(String name, int birthdayMonth, double baseSalary) {
super(name, birthdayMonth);
this.baseSalary = baseSalary;
}
@Override
public double getSalary(int month) {
return 1.1 * super.getSalary(month); // 经理的工资是基础工资的1.1倍
}
}
// Worker类,可以根据需要自定义计算公式
public class Worker extends Employee {
private double hourlyRate;
public Worker(String name, int birthdayMonth, double hourlyRate) {
super(name, birthdayMonth);
this.hourlyRate = hourlyRate;
}
@Override
public double getSalary(int month) {
// 计算按小时计算的工资
// ...
}
}
// 类似地,为其他员工类别创建相应类并覆盖getSalary方法
```
在实际应用中,你可以通过员工的对象引用,动态调用`getSalary`方法,由于多态性,无论传入的是哪个子类的实例,`getSalary`都会返回对应类特有的实现:
```java
Employee emp;
if (emp instanceof Manager) {
Manager manager = (Manager) emp;
System.out.println(manager.getName() + " 的月工资:" + manager.getSalary(month));
} else if (emp instanceof Worker) {
Worker worker = (Worker) emp;
System.out.println(worker.getName() + " 的月工资:" + worker.getSalary(month));
}
```
阅读全文