需求:加入我们在开发一个系统时 需要对员工(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;
- }
-
- @Override
- public 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);
- }
-
- @Override
- public 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());
- }
- }

下一篇文章:abstract 关键字不能和哪些关键字共存