1.案例介绍
某IT公司有多名员工,按照员工负责的工作不同,进行了部门的划分(研发部员工、维护部员工)。研发部根据所需研发的内容不同,又分为JavaEE工程师、Android工程师;维护部根据所需维护的内容不同,又分为网络维护工程师、硬件维护工程师。
公司的每名员工都有他们自己的员工编号、姓名,并要做它们所负责的工作。
- 工作内容
- JavaEE工程师:员工号为xxx的 xxx员工,正在研发淘宝网站
- Android工程师:员工号为xxx的 xxx员工,正在研发淘宝手机客户端软件
- 网络维护工程师:员工号为xxx的 xxx员工,正在检查网络是否畅通
- 硬件维护工程师:员工号为xxx的 xxx员工,正在修复打印机
请根据描述,完成员工体系中所有类的定义,并指定类之间的继承关系。进行XX工程师类的对象创建,完成工作方法的调用。
2.案例分析
3.实现代码
- 根据员工信息的描述,确定每个员工都有员工编号、姓名、要进行工作。则,把这些共同的属性与功能抽取到父类中(员工类),关于工作的内容由具体的工程师来进行指定。
- 工作内容
- JavaEE工程师:员工号为xxx的 xxx员工,正在研发淘宝网站
- Android工程师:员工号为xxx的 xxx员工,正在研发淘宝手机客户端软件
- 网络维护工程师:员工号为xxx的 xxx员工,正在检查网络是否畅通
- 硬件维护工程师:员工号为xxx的 xxx员工,正在修复打印机
- 工作内容
- 创建JavaEE工程师对象,完成工作方法的调用
- 定义员工类(抽象类)
package cn.itcast.demo08; /* * 员工类: * 共性的抽取 * 姓名,编号 ,工作方法(抽象) */ public abstract class Worker { private String name; private String number; public Worker(String name , String number){ this.name = name; this.number = number; } public abstract void work(); public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
- 定义研发部员工类Developer 继承 员工类Worker
package cn.itcast.demo08; /* * 研发部类,属于员工类的一种,继承员工类 */ public abstract class Develop extends Worker { public Develop(String name ,String number){ super(name,number); } //public abstract void work() }
- 定义维护部员工类Maintainer 继承 员工类Worker
package cn.itcast.demo08; /* * 维护部类,属于员工一种,继承 */ public abstract class Maintainer extends Worker { public Maintainer(String name ,String number){ super(name,number); } }
- 定义JavaEE工程师 继承 研发部员工类,重写工作方法
package cn.itcast.demo08; /* * 定义JavaEE工程师 * 属于研发部的员工,继承研发部 * */ public class JavaEE extends Develop { public JavaEE(String name ,String number){ super(name,number); } @Override public void work() { System.out.println("编号为"+super.getNumber()+"的"+super.getName()+"员工;正在研发淘宝网站"); } }
- 定义Android工程师 继承 研发部员工类,重写工作方法
package cn.itcast.demo08; public class Android extends Develop { public Android(String name ,String number){ super(name,number); } @Override public void work() { System.out.println("编号为"+getNumber()+"的"+getName()+"员工;正在研发手机应用"); } }
- 定义Network网络维护工程师 继承 维护部员工类,重写工作方法
package cn.itcast.demo08; /* * 网络工程师,维护部的 * 继承维护部类 */ public class Network extends Maintainer { public Network(String name ,String number){ super(name,number); } @Override public void work() { System.out.println("编号为"+getNumber()+"的"+getName()+"员工;正在维护网络"); } }
- 定义Hardware硬件维护工程师 继承 维护部员工类,重写工作方法
package cn.itcast.demo08; /* * 硬件工程师属于维护类 * 继承维护类 */ public class Hardware extends Maintainer { public Hardware(String name ,String number){ super(name,number); } @Override public void work() { System.out.println("编号为"+getNumber()+"的"+getName()+"员工;正在维修打印机"); } }
- 在测试类中,创建JavaEE工程师对象,完成工作方法的调用
package cn.itcast.demo08; /* * 测试员工案例 */ public class Test { public static void main(String[] args) { //创建EE对象,调用方法 JavaEE e = new JavaEE("张飞","1001"); e.work(); //创建Net对象,调用方法 Android a = new Android("关羽", "1002"); a.work(); Network n = new Network("刘备", "1003"); n.work(); Hardware h = new Hardware("赵子龙", "1004"); h.work(); } }
4.运行结果