Java面向对象思想_继承_编写带有继承结构的标准javabean类——小练习

本文详细描述了一个Java程序,通过类结构定义了员工(Employee)、教研部教师(Teacher,分为讲师和助教)、行政部员工(AdminStaff,分为维护专员和采购专员)等角色,并展示了如何根据关系图进行编码实现。

题目:

在某公司有很多员工(Employee)

1.按照工作内容不同分教研部员工(Teacher)和行政部员工(AdminStaff)

2.教研部根据教学方式不同又分为讲师(Lecturer)和助教(Tutor)

3.行政部根据负责事项不同,又分为维护专员(MainTainer)和采购专员(Buyer)

4.公司的每个员工都有其编号、姓名和其负责的工作

5.每个员工都有工作的功能,但是具体的工作内容不一样

首先开始根据题目绘图(绘图应从下往上):

完整关系如上

根据关系图开始编码(编码应根据关系图由上向下):

员工Employee类:
public class Employee {
    private String id;
    private String name;

    private String work;

    public void work() {
        System.out.println("工号为:" + this.getId() + "的员工:" + this.getName() + "在进行工作:" + this.getWork());
    }


    public Employee() {
    }

    public Employee(String id, String name, String work) {
        this.id = id;
        this.name = name;
        this.work = work;
    }



    public String getId() {
        return id;
    }


    public void setId(String id) {
        this.id = id;
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    public String getWork() {
        return work;
    }


    public void setWork(String work) {
        this.work = work;
    }

   
}
教研部员工Teacher类:
public class Teacher extends Employee {

    //添加部门属性
    private String department;


    public Teacher() {
        //默认初始化工作为教研部工作(讲师或助教)
        this.setWork("教研部工作(讲师或助教)");
        //默认初始化部门为教研部
        this.setDepartment("教研部");
    }

    //创建对象时部门和工作已经确定,直接初始化赋值
    public Teacher(String id, String name) {
        //对教研部员工工作直接赋值
        super(id, name, "教研部工作(讲师或助教)");
        this.setDepartment("教研部");
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }
}
行政部员工AdminStaff类:
public class AdminStaff extends Employee {

    //添加部门属性
    private String department;


    public AdminStaff() {
        //默认初始化工作为行政部工作(维护专员或采购专员)
        this.setWork("行政部工作(维护专员或采购专员)");
        //默认初始化部门为行政部
        this.setDepartment("行政部");
    }

    //创建对象时部门和工作已经确定,直接初始化赋值
    public AdminStaff(String id, String name) {
        //对行政部员工工作和部门直接赋值
        super(id, name, "行政部工作(维护专员或采购专员)");
        this.setDepartment("行政部");
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }
}
讲师Lecturer类:
public class Lecturer extends Teacher {


    public Lecturer() {
        //初始化工作为讲师工作
        this.setWork("讲师工作");
    }

    public Lecturer(String id, String name) {
        super(id, name);
        //重新给工作赋值
        this.setWork("讲师工作");
    }
}
助教Tutor类:
public class Tutor extends Teacher {
    public Tutor() {
        //初始化工作为助教工作
        this.setWork("助教工作");
    }

    public Tutor(String id, String name) {
        super(id, name);
        //重新给工作赋值
        this.setWork("助教工作");
    }
}
维护专员Maintainer类:
public class Maintainer extends AdminStaff {
    public Maintainer() {
        //初始化工作为维护专员工作
        this.setWork("维护专员工作");
    }

    public Maintainer(String id, String name) {
        super(id, name);
        //重新给工作赋值
        this.setWork("维护专员工作");
    }
}
采购专员Buyer类:
public class Buyer extends AdminStaff {
    public Buyer() {
        //初始化工作为采购专员工作
        this.setWork("采购专员工作");
    }

    public Buyer(String id, String name) {
        super(id, name);
        //重新给工作赋值
        this.setWork("采购专员工作");
    }
}

最后编写测试类展示所有功能

public class Test {
    public static void main(String[] args) {
        //讲师
        Lecturer lct = new Lecturer("001", "xiaobai");
        lct.work();
        System.out.println("工号:" + lct.getId() + ", 姓名:" + lct.getName()
                + ", 工作:" + lct.getWork() + ", 部门:" + lct.getDepartment());

        System.out.println("----------------------------------------");

        //助教
        Tutor tt = new Tutor("011", "xiaohei");
        tt.work();
        System.out.println("工号:" + tt.getId() + ", 姓名:" + tt.getName()
                + ", 工作:" + tt.getWork() + ", 部门:" + tt.getDepartment());

        System.out.println("----------------------------------------");

        //维护专员
        Maintainer mt = new Maintainer("021", "xiaohuang");
        mt.work();
        System.out.println("工号:" + mt.getId() + ", 姓名:" + mt.getName()
                + ", 工作:" + mt.getWork() + ", 部门:" + mt.getDepartment());

        System.out.println("----------------------------------------");

        //采购专员
        Buyer by = new Buyer("031", "xiaolv");
        by.work();
        System.out.println("工号:" + by.getId() + ", 姓名:" + by.getName()
                + ", 工作:" + by.getWork() + ", 部门:" + by.getDepartment());

    }
}
运行结果:

深知自己的水平还差很多,希望各位不要吝啬自己的宝贵意见,我会听取改进,谢谢大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值