Java学习笔记17(面向对象十:综合案例)

在面向对象这个专题的最后

结合前面多篇文章,用到了面向对象的很多方面知识,做了一个简单的案例:

饭店案例:

package hotel;

/*
 *   酒店的员工类
 *     员工共同特点:姓名,工号,工作方法
 */
public class Employee {
    private String name;
    private String id;

    // 注意:实际开发中,需要提供给用户两套构造方法
    // 一套空参,一套有参

    public Employee() {
    }

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

    public String getName() {
        return name;
    }

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

    public String getId() {
        return id;
    }

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

/*
 *   酒店的VIP服务
 *     厨师和服务员
 */
public interface VIP {
    public abstract void services();
}
package hotel;

/*
 *  厨师类
 *  继承员工类,实现VIP接口
 */
public class Chef extends Employee implements VIP {

    public Chef() {
        super();
    }

    public Chef(String name, String id) {
        super(name, id);
    }

    public void work() {
        System.out.println("厨师在炒菜");
    }

    public void services() {
        System.out.println("为VIP做精致的菜");
    }
}
package hotel;

/*
 *  服务员类:
 *   继承员工类,实现VIP接口
 */
public class Waiter extends Employee implements VIP {

    public Waiter() {
        super();
    }

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

    public void work() {
        System.out.println("服务员在上菜");
    }

    public void services() {
        System.out.println("服务员为VIP特殊服务");
    }
}
package hotel;

/*
 *  定义经理类:
 *     继承员工类,没有VIP功能
 *     自己有奖金属性
 */
public class Manager extends Employee {

    public Manager() {
        super();
    }

    public Manager(String name, String id, double money) {
        super(name, id);
        this.money = money;
    }

    private double money;

    public void work() {
        System.out.println("经理在管理酒店");
    }

}
package hotel;

import javax.swing.text.ChangedCharSetException;

public class Test {
    public static void main(String[] args) {
        //创建一个经理,两个服务员,两个厨师
        Manager m1 = new Manager("张三","经理001",6666.66);
        m1.work();
        Waiter w1 = new Waiter("小明", "服务员001");
        Waiter w2 = new Waiter("小红", "服务员002");
        w1.work();
        w1.services();
        w2.work();
        w2.services();
        Chef c1 = new Chef("李四","厨师001");
        Chef c2 = new Chef("王五","厨师002");
        c1.work();
        c1.services();
        c2.work();
        c2.services();
    }
}
/*
输出:
经理在管理酒店
服务员在上菜
服务员为VIP特殊服务
服务员在上菜
服务员为VIP特殊服务
厨师在炒菜
为VIP做精致的菜
厨师在炒菜
为VIP做精致的菜
*/