某学校教师的工资=基本工资+课时补贴。教授的基本工资为5000元,每学时补贴70元;副教授的基本工资为3500元,每学时补贴60元;讲师的基本工资为2600元,每学时补贴55元。已知某个教师的学时数,计算该教师的每月工资。(要求使用继承实现) 要求使用Java语言
时间: 2024-10-19 21:16:39 浏览: 24
教师工资管理系统.rar
在Java中,我们可以使用继承的方式,创建一个`Teacher`类作为基础类,然后分别继承它并为教授、副教授和讲师定义子类,每个子类都有自己的基本工资和课时补贴。这里是一个简单的实现:
```java
// 基础 Teacher 类
abstract class Teacher {
protected int baseSalary;
protected double teachingHours;
public Teacher(int baseSalary, double teachingHours) {
this.baseSalary = baseSalary;
this.teachingHours = teachingHours;
}
public abstract double calculateTotalSalary();
// 计算基本工资
public int getBaseSalary() {
return baseSalary;
}
// 设置基本工资
public void setBaseSalary(int baseSalary) {
this.baseSalary = baseSalary;
}
// 获取课时补贴
public double getTeachingHour补贴() {
return teachingHours * getTeachingHourRate();
}
// 父类计算总工资的方法,返回值是抽象的,需要子类覆盖
protected double getTeachingHourRate() {
throw new UnsupportedOperationException("子类需要实现此方法");
}
}
// 教授类,继承自 Teacher
class Professor extends Teacher {
@Override
public double calculateTotalSalary() {
return baseSalary + getTeachingHour补贴();
}
@Override
protected double getTeachingHourRate() {
return 70.0; // 教授每学时的补贴
}
}
// 副教授和讲师类同理
class AssociateProfessor extends Teacher {
@Override
public double calculateTotalSalary() {
return baseSalary + getTeachingHour补贴();
}
@Override
protected double getTeachingHourRate() {
return 60.0; // 副教授每学时的补贴
}
}
class AssistantProfessor extends Teacher {
@Override
public double calculateTotalSalary() {
return baseSalary + getTeachingHour补贴();
}
@Override
protected double getTeachingHourRate() {
return 55.0; // 讲师每学时的补贴
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
Teacher teacher;
if (isProfessor()) {
teacher = new Professor(5000, 10); // 假设教授有10学时
} else if (isAssociateProfessor()) {
teacher = new AssociateProfessor(3500, 12); // 假设副教授有12学时
} else {
teacher = new AssistantProfessor(2600, 15); // 假设讲师有15学时
}
System.out.println("教师月工资: " + teacher.calculateTotalSalary());
}
// 判断是否为特定类型的教师
private static boolean isProfessor() {
// 实际应用中应从数据库或用户输入获取教师类型
return true; // 这里仅做假设
}
}
```
以上代码定义了一个抽象的`Teacher`类,以及它的三个子类`Professor`、`AssociateProfessor`和`AssistantProfessor`。通过判断教师类型,创建对应的子类实例,然后调用`calculateTotalSalary()`方法来计算工资。注意实际应用中,你需要添加一个方法来确定教师的具体类型。
阅读全文