从此封心@ 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 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛