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接口类

3Status枚举类

package com.atguigu.bean;

public enum Status {

    FREE, BUSY, VOCATION

}

(4)Equipment接口

package com.atguigu.bean;

public interface Equipment {

    public String getDescription();

}

5Programmer类

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