JavaSE--接口在开发中的作用

发布时间 2023-08-15 10:48:28作者: 洛小依ovo

一、举个例子

// 接口:菜单
public interface FoodMenu{
    // 西红柿炒鸡蛋
    void scd();
    // 炒鸡蛋
    void yxrs();
}
// 中餐厨师
public class ChinaCooker implements FoodMenu{
    public void scd(){
        System.out.println("中国厨师的scd");
    }
    public void yxrs(){
        System.out.println("中国厨师的yxrs");
    }
}
// 美国厨师
public class AmericCooker implements FoodMenu{
    public void scd(){
        System.out.println("美国厨师的scd");
    }
    public void yxrs(){
        System.out.println("美国厨师的yxrs");
    }
}
// 顾客
public class Customer{
    // Customer has a FoodMenu  
    // 凡是能够用  has a 来描述的,统一以属性的方式存在
    private FoodMenu foodMenu;
    // FoodMenu foodMenu = new ChinaCooker();// 顾客想吃中餐
    // FoodMenu foodMenu = new AmericCooker();// 顾客想吃西餐
    public Customer(){
        
    }
    // 点菜
    public void order(){
        // 调用get方法拿菜单
        // FoodMenu fm = this.getFoodMenu();
        // 也可以不调用,因为在本类中私有的属性可以访问
        foodMenu.scd();
        foodMenu.yxrs();
    }
    public Customer(FoodMenu foodMenu){
        this.foodMenu = foodMenu;
    }
    public void setFoodMenu(FoodMenu foodMenu){
        this.foodMenu = foodMenu;
    }
    public FoodMenu getFoodMenu(){
        return foodMenu;
    }
}

  

// 测试
public class Test{
    public static void main(String[] args){
        // 创建一个厨师对象
        FoodMenu cooker1 = new ChinaCooker();
        // FoodMenu cooker2 = new AmericCooker();
        // 创建顾客对象
        Customer customer = new Customer(cooker1);
        // 顾客点菜
        customer.order();
    }
}