当前位置: 首页 > 工具软件 > 点菜宝 > 使用案例 >

顾客餐馆点菜

湛鸿
2023-12-01
package com.javase.进阶;

public interface FoodMenu {
//    西红柿炒鸡蛋
    void xiHongShiChaoJiDan();

//    鱼香肉丝
    void yuXiangRouSi();
}
package com.javase.进阶;

public class AmericaCooker implements FoodMenu {
//    实现菜单接口,就需要实现菜单中所有的方法

    public void xiHongShiChaoJiDan() {
        System.out.println("西餐师傅做的西红柿炒鸡蛋!太甜啦!");
    }

    public void yuXiangRouSi() {
        System.out.println("西餐师傅做的鱼香肉丝!太甜啦!");
    }
}
package com.javase.进阶;

class ChinaCooker implements FoodMenu {
//    实现接口,需要实现接口中的所有方法
    public void xiHongShiChaoJiDan(){
        System.out.println("中餐师傅做的西红柿炒鸡蛋,河北口味!");
    }

    public void yuXiangRouSi() {
        System.out.println("中餐师傅做的鱼香肉丝,河北口味!");
    }
}
package com.javase.进阶;

public class Customer {
//    顾客手中有一个菜单,符合" has a " 所以“菜单”应该是顾客的一种属性
    private FoodMenu foodMenu;
//    无参构造

    public Customer() {
    }

//    有参构造

    public Customer(FoodMenu foodMenu) {
        this.foodMenu = foodMenu;
    }

//    set and get 方法

    public FoodMenu getFoodMenu() {
        return foodMenu;
    }

    public void setFoodMenu(FoodMenu foodMenu) {
        this.foodMenu = foodMenu;
    }

//    顾客点菜的方法
    public void order(){
//        顾客需要先拿到菜单(getFoodMenu()),然后点菜(因为菜单中有xiHongShiChaoJiDan(),所以.xiHongShiChaoJiDan())
//        下行代码getFoodMenu()获取的是FoodMenu类型的引用,父类型引用在调用方法的时候,执行的是子类型重写后的方法
        getFoodMenu().xiHongShiChaoJiDan();
//        因为菜单里有yuXiangRouSi(),所以.yuXiangRouSi()
        getFoodMenu().yuXiangRouSi();
    }
}
package com.javase.进阶;

public class FoodMenuText {
    public static void main(String[] args) {

//        创建一个中餐师傅(此处使用多态,父类型引用指向子类型对象; 中餐师傅实现了菜单接口,FoodMenu就是父,ChinaCooker就是子)
        FoodMenu cooker1 = new ChinaCooker();
//        创建一个西餐师傅(此处使用多态,父类型引用指向子类型对象; 西餐师傅实现了菜单接口,FoodMenu就是父,AmericaCooker就是子)
        FoodMenu cooker2 = new AmericaCooker();
//        创建一个顾客,给顾客传入一个西餐师傅对象,该顾客点菜后吃到的就是西餐师傅做的菜
//        Customer customer = new Customer(cooker2);
//        创建一个顾客,给顾客传入一个中餐师傅对象,该顾客点菜后吃到的就是中餐师傅做的菜
        Customer customer = new Customer(cooker1);
//        顾客点菜
        customer.order();
    }
}

/*

程序运行结果:中餐师傅做的西红柿炒鸡蛋,河北口味!
中餐师傅做的鱼香肉丝,河北口味!

*/

 类似资料: