JavaSE进阶
四、开发详解
1、编写实体类
从中可以看出架构师继承设计师,设计师继承程序员,程序员继承员工类。
程序员及其子类关联一个设备对象。即在程序员中有一个设备的引用,或者说有一个Equipment类型的属性。
而设备又分为三种,都实现了设备接口分别为PC电脑类,NoteBook笔记本类,Printer打印机类。
(1)Employee类
package com.atguigu.bean; public class Employee { private int id; private String name; private int age; private double salary; public Employee() { } public Employee(int id, String name, int age, double salary) { this.id = id; this.name = name; this.age = age; this.salary = salary; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public String getDetails() { return id + "\t" + name + "\t" + age+ "\t" +salary; } @Override public String toString() { return getDetails(); } } |
看显示格式,提供getDetails()返回员工的详细信息,并且格式使用”\t”控制。
public String getDetails() { return id + "\t" + name + "\t" + age+ "\t" +salary; } @Override public String toString() { return getDetails(); } |
(2)Employee的子类Programmer
从上面分析,可以看出,
- 程序员有一个Status的属性,表名该员工的状态。而状态只有三种,因此可以使用枚举类型。
- 程序员有一个Equipment的属性,表名该员工领用的设备。
因此需要先写Status枚举类和Equipment接口类
(3)Status枚举类
package com.atguigu.bean; public enum Status { FREE, BUSY, VOCATION } |
(4)Equipment接口
package com.atguigu.bean; public interface Equipment { public String getDescription(); } |
(5)Programmer类
package com.atguigu.bean; public class Programmer extends Employee { private int memberId; private Status status = Status.FREE; private Equipment equipment; public Programmer() { } public Programmer(int id, String name, int age, double salary, Equipment equipment) { super(id, name, age, salary); this.equipment = equipment; } public Status getStatus() { return status; } public void setStatus(Status status) { this.status = status; } public Equipment getEquipment() { return equipment; } public void setEquipment(Equipment equipment) { this.equipment = equipment; } public int getMemberId() { return memberId; } public void setMemberId(int memberId) { this.memberId = memberId; } @Override public String toString() { return getDetails() + "\t程序员\t" + status + "\t\t\t" + equipment ; } } |
从上面分析:
- Status属性默认都是FREE。
- 打印程序员Programmer对象的格式。Employee通用的详细信息后面再拼接上 "\t程序员\t" + status + "\t\t\t" + equipment