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

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

综合测试题:品尝饮料
一、要求  
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 准备学习小程序搭建,谁能手把手的教我啊?
  • ¥15 关于#嵌入式硬件#的问题:树莓派第一天重装配置python和opencv后第二天打开就成这样,瞎捣鼓搞出来文件夹还是没把原来的界面调回来
  • ¥20 Arduino 循迹小车程序电路出错故障求解
  • ¥20 Arduino 循迹小车程序电路出错故障求解
  • ¥100 AT89C52单片机C语言调试之后再回答
  • ¥15 AT89C52单片机C语言串口助手发送数据包返回值
  • ¥15 C++数组中找第二小的数字程序纠错
  • ¥50 MATLAB APP 制作出现问题
  • ¥15 wannier复现图像时berry曲率极值点与高对称点严重偏移
  • ¥15 利用决策森林为什么会出现这样·的问题(关键词-情感分析)