.定义项目经理类:属性——姓名、工号、工资、奖金;行为——work()方法。定义程序员类:属性——姓名、工号、工资;行为——work()方法。要求:向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法。并编写测试类,完成对两个子类的测试。
时间: 2024-11-20 13:41:06 浏览: 54
在面向对象编程中,你可以创建一个名为`Employee`的抽象父类,来包含共享的属性如`姓名`、`工号`和`基本工资`。然后,分别定义`ProjectManager`和`Programmer`两个子类,它们都是`Employee`类的实例。`ProjectManager`类可能还会有额外的`奖金`属性,并重写`work()`方法以处理项目管理相关的任务,而`Programmer`类则可能仅关注编程工作,可能不需要奖金。
```java
// 父类 Employee
public abstract class Employee {
private String name;
private int id;
private double baseSalary;
public Employee(String name, int id, double baseSalary) {
this.name = name;
this.id = id;
this.baseSalary = baseSalary;
}
// 公共方法
public String getName() {
return name;
}
public int getId() {
return id;
}
public double getBaseSalary() {
return baseSalary;
}
// 抽象方法,子类需要覆盖
public abstract void work();
}
// 子类 ProjectManager
public class ProjectManager extends Employee {
private double bonus;
public ProjectManager(String name, int id, double baseSalary, double bonus) {
super(name, id, baseSalary);
this.bonus = bonus;
}
@Override
public void work() {
System.out.println("项目经理 " + name + " 正在管理项目...");
}
// 可能需要的方法
public double getBonus() {
return bonus;
}
}
// 子类 Programmer
public class Programmer extends Employee {
public Programmer(String name, int id, double baseSalary) {
super(name, id, baseSalary);
}
@Override
public void work() {
System.out.println("程序员 " + name + " 正在编写代码...");
}
}
// 测试类 Test
public class Test {
public static void main(String[] args) {
ProjectManager pm = new ProjectManager("张三", 1001, 8000, 2000);
pm.work(); // 输出 "项目经理 张三 正在管理项目..."
Programmer pr = new Programmer("李四", 1002, 6000);
pr.work(); // 输出 "程序员 李四 正在编写代码..."
}
}
```
阅读全文