在面向对象这个专题的最后
结合前面多篇文章,用到了面向对象的很多方面知识,做了一个简单的案例:
饭店案例:
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做精致的菜 */