java-抽象类、接口等实际应用 (酒店小案例)

1、酒店小案例

某五星级酒店,资金雄厚,要招聘多名员工(经理、厨师、服务员)。入职的员工需要记录个人信息(姓名、工号、经理特有奖金属性)。他们都有自己的工作要做。

本案例要完成如下需求:

l  获取酒店幸运员工;

l  酒店开设VIP服务,酒店的厨师与服务员可以提供VIP服务。(厨师做菜加量、服务员给顾客倒酒)。

l  编写测试类

n  向酒店中,增加多名员工(其中包含1名经理,1名厨师、2名服务员);

n  调用酒店员工的工作功能

n  调用酒店员工的VIP服务功能

 

1、建立员工类

//员工姓名 编号 工作一系列共性 写在大类里
public abstract class Employee {
    private String name;//有私有就必须写getset方法
    private int id;

    // 开发标准 必须写空参和全参构造器
    public Employee()
    {
    }

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

    public abstract void work();

    public String getName() {
        return name;
    }

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

    public int getId() {
        return id;
    }

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

}

2、建立特殊VIP服务接口

//特殊服务接口
public interface Service {
    public abstract void VIPservice();
}

3、建立厨师类

//厨师类
public class Cooker extends Employee implements Service {
    public Cooker()
    {
    }

    public Cooker(String name, int id)
    {
        super(name, id);
    }

    @Override
    public void work() {
        System.out.println("我是厨师,我的工作是煮菜。");// 重写工作方法
    }

    public void VIPservice() {
        System.out.println("我的VIP服务是做菜加量!");// 实现VIP接口方法
    }
}

4、建立服务员类

//服务员类
public class Waiter extends Employee implements Service {
    public Waiter()
    {
    }

    public Waiter(String name, int id)
    {
        super(name, id);
    }

    @Override
    public void work() {
        System.out.println("我是服务员,我的工作是端菜。");
    }

    public void VIPservice() {
        System.out.println("我的VIP服务是花式倒酒服务!");
    }
}

5、建立经理类

//经理类
public class Manager extends Employee {
    private int bonus;

    public Manager()
    {
    }

    public Manager(String name, int id, int bonus)
    {
        super(name, id);
        this.bonus = bonus;
    }

    @Override
    public void work() {
        System.out.println("我是经理,我的工作是是管理厨师和服务员!");

    }

    public void setBonus(int bonus) {
        this.bonus = bonus;
    }

    public int getBonus() {
        return this.bonus;
    }
}

6、建立测试类

public class Test {
    public static void main(String[] args) {
        // 招人入酒店
        Cooker c1 = new Cooker("厨师1", 1001);
        Cooker c2 = new Cooker("厨师2", 1002);
        Cooker c3 = new Cooker("厨师3", 1003);
        Cooker c4 = new Cooker("厨师4", 1004);
        Waiter w1 = new Waiter("服务员1", 1101);
        Waiter w2 = new Waiter("服务员2", 1102);
        Waiter w3 = new Waiter("服务员3", 1103);
        Manager m1 = new Manager("经理", 1201, 10000);
        // 调用厨师的工作的VIP服务
        c1.work();
        c1.VIPservice();
        // 调用服务员的工作的VIP服务
        w1.work();
        w1.VIPservice();
        // 调用经理的工作
        m1.work();
        // 将名字放入list列表进行随机抽奖
        ArrayList<String> list = new ArrayList<String>();
        list.add(c1.getName());
        list.add(c2.getName());
        list.add(c3.getName());
        list.add(c4.getName());
        list.add(w1.getName());
        list.add(w2.getName());
        list.add(w3.getName());
        list.add(m1.getName());
        int index = new Random().nextInt(list.size());
        System.out.println("幸运儿是名字为" + list.get(index) + "的员工!恭喜你!");
    }
}

7、结果

原文地址:https://www.cnblogs.com/BruceKing/p/13322392.html