从此封心@ 2021-10-12 19:45 采纳率: 82.4%
浏览 152
已结题

来个解一下,求解救,麻烦写下代码谢谢

综合测试题:品尝饮料
一、要求  
1、建立一个Java抽象类Drink
a)声明一个抽象方法taste(),该方法负责输出饮料的味道;
b)饮料类型(Coffee(咖啡),Beer(啤酒),Milk(牛奶)):
c)声明静态方法getDrink(String drinkType),根据传入的饮料英文名称创建 不同的饮料对象,并返回该对象。

2、建立Drink的具体子类:  
a)分别建立Drink的子类:Coffee(咖啡),Beer(啤酒),Milk(牛奶); 
b)实现taste()方法,要求在控制台打印各自的味道特征。  

4、建立Test测试类,测试以上内容的正确性  
a)编写main方法,通过命令行传参的方式传入某种饮料的类型。
b)在main方法中,调用Drink类的getDrink方法,获得相应的饮料对象。然后调用该饮料对象的taste()方法,输出该饮料的味道。

 5、编译程序,并运行。  
a)如果当参数为Coffee时,结果为:咖啡:苦 
b)如果没有该种饮料,结果为:对不起!没有您输入的饮料类型。

  • 写回答

2条回答 默认 最新

  • Mattie chen 2021-10-12 20:36
    关注

    给你写了:
    首先是一个Drink接口:

    public interface Drink {
         void taste();
    }
    

    接着是三个子类

    
    public class Coffee implements Drink{
    
        @Override
        public void taste() {
            System.out.println("咖啡:苦");
        }
    
    }
    
    public class Beer implements Drink{
        @Override
        public void taste() {
            System.out.println("啤酒:略微苦涩");
        }
    }
    
    public class Milk implements Drink {
        @Override
        public void taste() {
            System.out.println("牛奶:微甜");
        }
    }
    

    然后是Drink工厂类,通过这个类中的方法根据传入参数获取不同的饮料类型

    
    public class DrinkFactory {
        public  static Drink getDrink(String drinkType){
            if (drinkType==null){
                return null;
            }
            if(drinkType.equalsIgnoreCase("Coffee")){
                return new Coffee();
            }else  if(drinkType.equalsIgnoreCase("Beer")){
                return new Beer();
            }else  if(drinkType.equalsIgnoreCase("Milk")){
                return new Milk();
            }
            return null;
        }
    }
    

    最后测试类:

    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] args) {
            //命令行输入参数
            System.out.println("请输入饮料类型:");
            Scanner scanner = new Scanner(System.in);
            String next = scanner.next();
            Drink drink = DrinkFactory.getDrink(next);
            if(drink==null){
                System.out.println("对不起!没有您输入的饮料类型。");
            }else {
                drink.taste();
            }
    
        }
    }
    

    打完收工

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月16日
  • 已采纳回答 10月12日
  • 修改了问题 10月12日
  • 创建了问题 10月12日

悬赏问题

  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计