程序员有姓名、工号、薪水、工作内容;项目经理有姓名、工号、薪水、还有奖金、工作内容。 (1)定义抽象类Employee
时间: 2024-12-17 19:22:53 浏览: 8
在面向对象编程中,如果想对程序员和项目经理这类职位共有的特征进行抽象描述,并且避免直接创建大量的员工类实例,可以定义一个抽象类`Employee`。这个抽象类通常会包含所有员工共有的属性,如姓名和工号,以及基本的薪资信息。对于具体的职责或差异较大的特性,比如奖金和工作内容,则可以让它作为方法或者通过继承的方式在子类中实现。
```java
// Java语言的抽象类示例
public abstract class Employee {
private String name;
private int id;
private double salary;
// 构造函数
public Employee(String name, int id, double salary) {
this.name = name;
this.id = id;
this.salary = salary;
}
// 共享属性的getter和setter方法
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public double getSalary() { return salary; }
public void setSalary(double salary) { this.salary = salary; }
// 抽象方法,表示工作内容,每个子类需要实现
public abstract String getTitle();
// 可能的通用方法,如计算年薪等
public double calculateAnnualBonus() {
// 默认无奖金,可以根据实际需求进行修改
return 0.0;
}
}
// 对于项目经理,我们可以定义一个子类ProjectManager
public class ProjectManager extends Employee {
private double bonus;
// 子类特有的属性
public ProjectManager(String name, int id, double salary, double bonus, String jobContent) {
super(name, id, salary);
this.bonus = bonus;
}
@Override
public String getTitle() {
return "项目经理";
}
// 继承自父类的方法
public double getBonus() { return bonus; }
public void setBonus(double bonus) { this.bonus = bonus; }
}
```
阅读全文