案例:Java多态实现饮料购买咖啡、可乐、矿泉水2.0

1.编写程序实现软料购买:

编写程序,接收用户输入的信息,选择购买的饮料。

可供选择的饮料有:咖啡、矿泉水和可乐。

其中,购买咖啡时可以选择:加糖、加奶还是什么都不加。

购买可乐时可以选择:买可口可乐还是百事可乐。


本次编程我们将分成多个类来实现:

创建Drink类:

public abstract class Drink {
    //定义饮料的属性
    private String name;//名称
    private int volume;//容量
    private int price;//价格

    //定义getXxx()和setXxx()方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getVolume() {
        return volume;
    }

    public void setVolume(int volume) {
        this.volume = volume;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    //定义有参的构造方法
    public Drink(String name, int volume,int price) {
        this.name = name;
        this.volume = volume;
        this.price=price;
    }

    //定义无参的构造方法
    public Drink() {
    }

    //定义抽象方法show()没有方法体
    public abstract void show();
}

 创建Coffee类继承Drink:

public class Coffee extends Drink {
    //定义咖啡的特有属性
    private String mixture;//添加物

    public String getMixture() {
        return mixture;
    }

    public void setMixture(String mixture) {
        this.mixture = mixture;
    }

    public Coffee(String name, int volume, String mixture, int price) {
        super(name, volume,price);
        this.mixture = mixture;
    }

    public Coffee() {

    }

    //重写show()方法
    @Override
    public void show() {
        System.out.println("名称:" + getName() + "\n添加配料:" + mixture + "\n容量:" + getVolume() + "\n价格:" + getPrice()+"元");
    }
}

创建Cola类继承Drink:

public class Cola extends Drink{
private String type;
    //定义有参的构造方法
    public Cola(String name, int volume,int price,String type) {
        super(name, volume,price);
        this.type=type;
    }

    //定义无参的构造方法
    public Cola() {
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    //重写show()方法
    @Override
    public void show() {
        System.out.println("名称:" + getName() +"\n种类:" + type + "\n容量:" + getVolume() + "\n价格:" + getPrice()+"元");
    }
}

创建Water类继承Drink: 

public class Water extends Drink {

    //定义有参的构造方法
    public Water(String name, int volume, int price) {
        super(name, volume, price);
    }

    //定义无参的构造方法
    public Water() {
    }

    //重写show()方法
    @Override
    public void show() {
        System.out.println("名称:" + getName() + "\n容量:" + getVolume() + "\n价格:" + getPrice());
    }
}

创建DrinkTest测试类(main):

//导Scanner包
import java.util.Scanner;
public class DrinkTest {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.print("请选择饮料(1、咖啡 2、矿泉水 3、可乐 0、退出):");
            int num = sc.nextInt();
            Drink drink;
            if (num==1){
                drink = new Coffee();
                drink.setName("咖啡");
                System.out.print("请输入购买的容量:");
                int volume = sc.nextInt();
                drink.setVolume(volume);
                System.out.print("请问是否要配料:(1、加糖 2、不加糖 3、什么都不加):");
                int num2 = sc.nextInt();
                if (num2==1){
                    ((Coffee) drink).setMixture("加糖");
                }else if (num2==2){
                    ((Coffee) drink).setMixture("加奶");
                }else if (num2==3){
                    ((Coffee) drink).setMixture("什么都不加");
                }else {
                    System.out.println("没有你想要的配料!");
                    continue;
                }
                System.out.println("您购买的信息如下:");
                drink.setPrice(6);
                drink.show();
            }else if (num==2){
                drink =  new Water("矿泉水",500,2);
                System.out.println("您购买的信息如下:");
                drink.show();
            }else if (num==3){
                drink = new Cola();
                drink.setName("可乐");
                System.out.print("请输入购买的容量:");
                int volume = sc.nextInt();
                drink.setVolume(volume);
                System.out.print("请输入购买可乐的种类:(1、百世可乐 2、可口可乐):");
                int num2 = sc.nextInt();
                if (num2==1){
                    ((Cola) drink).setType("百世可乐");
                }else if (num2==2){
                    ((Cola) drink).setType("可口可乐");
                }else {
                    System.out.println("没有你想要种类的可乐!");
                    continue;
                }
                System.out.println("您购买的信息如下:");
                drink.setPrice(3);
                drink.show();
            }else if (num==0){
                System.out.println("欢迎下次光临!");
                break;
            }else {
                System.out.println("没有你想要的饮料!");
            }
        }

    }
}

 运行结果:

请选择饮料(1、咖啡 2、矿泉水 3、可乐 0、退出):1
请输入购买的容量:50
请问是否要配料:(1、加糖 2、不加糖 3、什么都不加):1
您购买的信息如下:
名称:咖啡
添加配料:加糖
容量:50
价格:6元
请选择饮料(1、咖啡 2、矿泉水 3、可乐 0、退出):1
请输入购买的容量:30
请问是否要配料:(1、加糖 2、不加糖 3、什么都不加):2
您购买的信息如下:
名称:咖啡
添加配料:加奶
容量:30
价格:6元
请选择饮料(1、咖啡 2、矿泉水 3、可乐 0、退出):1
请输入购买的容量:34
请问是否要配料:(1、加糖 2、不加糖 3、什么都不加):3
您购买的信息如下:
名称:咖啡
添加配料:什么都不加
容量:34
价格:6元
请选择饮料(1、咖啡 2、矿泉水 3、可乐 0、退出):2
您购买的信息如下:
名称:矿泉水
容量:500
价格:2
请选择饮料(1、咖啡 2、矿泉水 3、可乐 0、退出):3
请输入购买的容量:100
请输入购买可乐的种类:(1、百世可乐 2、可口可乐):1
您购买的信息如下:
名称:可乐
种类:百世可乐
容量:100
价格:3元
请选择饮料(1、咖啡 2、矿泉水 3、可乐 0、退出):3
请输入购买的容量:45
请输入购买可乐的种类:(1、百世可乐 2、可口可乐):2
您购买的信息如下:
名称:可乐
种类:可口可乐
容量:45
价格:3元
请选择饮料(1、咖啡 2、矿泉水 3、可乐 0、退出):1
请输入购买的容量:43
请问是否要配料:(1、加糖 2、不加糖 3、什么都不加):4
没有你想要的配料!
请选择饮料(1、咖啡 2、矿泉水 3、可乐 0、退出):3
请输入购买的容量:234
请输入购买可乐的种类:(1、百世可乐 2、可口可乐):3
没有你想要种类的可乐!
请选择饮料(1、咖啡 2、矿泉水 3、可乐 0、退出):0
欢迎下次光临!

Process finished with exit code 0


 本次编程相对于1.0版本的Java多态实现饮料购买咖啡、可乐、矿泉水变得更加灵活方便,与我们现实生活相符合。


到底啦!给靓仔点个关注吧!

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liangzai2048

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值