需求:加入我们在开发一个系统时 需要对员工(Employee)类进行设计,员工包含3个属性:姓名、工号(number)以及工资(salary)。
- 经理(Manager)也是员工,除了含有员工的属性外,另外还有一个奖金(bonus)属性。
- headman(组长)也是员工
- 然后定义工作的方法
请使用继承的思想设计出员工类和经理类。
程序代码分析:(画图分析)
- 员工——(非常抽象)
- 员工——角色 项目经理角色、项目组长的角色、财务角色
- 项目经理角色——管理整个项目 包括 安排项目任务
- 项目组长的角色——带领团队开发任务 管理小团队
案例代码:
EmployeeParent.java
package com.面向对象.Demo26;/*** 员工类*/
public abstract class EmployeeParent {public EmployeeParent() {}public EmployeeParent(String name, int number, Double salary) {this.name = name;this.number = number;this.salary = salary;}private String name; //姓名private int number; //工号private Double salary; // 工资public String getName() {return name;}public void setName(String name) {this.name = name;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public Double getSalary() {return salary;}public void setSalary(Double salary) {this.salary = salary;}/*** 不同的员工 对应的工作任务 是不一样的 work() 抽象方法* 需要交给 不同的子类来重写的*/public abstract void work();
}
Manager.java
package com.面向对象.Demo26;/*** 项目经理类*/
public class Manager extends EmployeeParent {private Double bonus; // 奖金/*** 在默认的情况下 是有一个无参构造方法的 默认 super(); 父类中无参构造方法的*/public Manager(String name, int number, Double salary, Double bonus) {super(name, number, salary);this.bonus = bonus;}@Overridepublic void work() {System.out.println("项目经理Manager-管理整个项目");}public Double getBonus() {return bonus;}
}
Headman.java
package com.面向对象.Demo26;/*** 项目组长类*/
public class Headman extends EmployeeParent {public Headman(String name, int number, Double salary) {super(name, number, salary);}@Overridepublic void work() {System.out.println("项目组长Headman-负责带领小的团队编码工作");}
}
Test01.java
package com.面向对象.Demo26;public class Test01 {public static void main(String[] args) {EmployeeParent parent = new Manager("张三", 1, 20000.00, 2000.00);parent.work();System.out.println("员工姓名:" + parent.getName());System.out.println("员工工号:" + parent.getNumber());System.out.println("员工薪资:" + parent.getSalary());
// System.out.println("员工奖金:"+parent.bonus); //这样是访问不到的/*** 编译看左边 执行看右边* 多态转型(向下转型)* 父转子*/Manager manager = (Manager) parent;System.out.println("项目经理奖金:" + manager.getBonus());System.out.println("=============================");Headman headman = new Headman("李四", 2, 10000.00);headman.work();System.out.println("员工姓名:" + headman.getName());System.out.println("员工工号:" + headman.getNumber());System.out.println("员工薪资:" + headman.getSalary());}
}
运行结果:
下一篇文章: