java中用继承设计employee和manager类,体现“经理是一种员工”的is-a关系:employee封装姓名、工号、基本薪资等共性属性与displayinfo()、getmonthlysalary()方法;manager继承employee,扩展department、bonus字段,重写月薪计算和信息显示,并可新增holdteammeeting()等特有行为;通过employee类型变量引用manager对象实现多态,支持统一处理与集合存储。

在 Java 中用继承设计员工(Employee)和经理(Manager)类,核心是抓住“经理是一种员工”这一 is-a 关系,让 Manager 类继承 Employee 类,复用共性属性与行为,再扩展或重写特有部分。
1. 定义父类 Employee(封装通用属性和方法)
员工共有的字段如姓名、工号、基本薪资、入职日期等,应放在 Employee 中;通用行为如打印信息、计算月薪(暂按固定工资)也在此定义:
示例代码:
public class Employee {
protected String name;
protected String id;
protected double baseSalary;
public Employee(String name, String id, double baseSalary) {
this.name = name;
this.id = id;
this.baseSalary = baseSalary;
}
public void displayInfo() {
System.out.printf("员工[%s],工号:%s,基本工资:%.2f元%n", name, id, baseSalary);
}
public double getMonthlySalary() {
return baseSalary; // 默认按基本工资发
}
}
2. 定义子类 Manager(继承 + 扩展 + 重写)
经理除了具备员工所有特征,还有额外职责:管理团队、发放奖金、可能有部门信息。因此:
- 用 extends Employee 继承父类字段和方法
- 添加专属字段:如
department(部门)、bonus(绩效奖金) - 重写
getMonthlySalary():月薪 = 基本工资 + 奖金 - 重写
displayInfo():补充经理特有信息
示例代码:
public class Manager extends Employee {
private String department;
private double bonus;
public Manager(String name, String id, double baseSalary, String department, double bonus) {
super(name, id, baseSalary); // 调用父类构造器
this.department = department;
this.bonus = bonus;
}
@Override
public double getMonthlySalary() {
return baseSalary + bonus;
}
@Override
public void displayInfo() {
System.out.printf("经理[%s],工号:%s,部门:%s,月薪:%.2f元(含奖金 %.2f元)%n",
name, id, department, getMonthlySalary(), bonus);
}
// 可选:新增经理特有行为
public void holdTeamMeeting() {
System.out.println(name + " 正在召开部门例会。");
}
}
3. 使用多态体现设计价值
继承的价值不仅在于代码复用,更在于支持多态——用统一类型处理不同子类对象:
- 声明为
Employee emp1 = new Employee(...) - 声明为
Employee emp2 = new Manager(...) - 调用
emp1.displayInfo()和emp2.displayInfo()会自动执行各自版本 - 可将不同员工放入同一集合:
List<employee> staff = Arrays.asList(emp1, emp2);</employee>
4. 注意事项与建议
- 父类中需将共用字段设为
protected(或提供getter/setter),确保子类可访问 - 避免在父类构造器中调用可能被子类重写的方法(易引发初始化问题)
- 若员工类型不止两种(如实习生、总监),可考虑引入抽象类或接口进一步分层
- 实际项目中,薪资逻辑较复杂,建议将计算抽离为策略类,而非全靠重写方法
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











