当前位置: 首页 > 工具软件 > Pizza > 使用案例 >

案例:Java多态实现披萨制作2.0

宰父霖
2023-12-01

1.编写程序实现比萨制作。需求说明编写程序,接收用户输入的信息,选择需要制作的比萨。可供选择的比萨有:培根比萨和海鲜比萨。
实现思路及关键代码
1)分析培根比萨和海鲜比萨
2)定义比萨类
3)属性:名称、价格、大小
4)方法:展示
5)定义培根比萨和海鲜比萨继承自比萨类
6)定义测试类,根据输入信息产生具体的比萨对象


分析:
1、培根披萨:克数、名称、价格、大小
2、海鲜披萨:配料信息、名称、价格、大小

由于培根披萨和海鲜披萨存在共性,所有我提取出来到一个抽象类中

3、披萨:名称、价格、大小

4、定义展示方法show()
5、定义生产披萨方法PizzaStore
6、键入输入对象
7、定义测试类、根据输入信息产生具体的比萨对象

本次编程我们将分成多个类完成。

新建抽象类Pizza:

public abstract class Pizza {
    private String name;//名称
    private int size;//大小
    private int price;//价格

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

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

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public int getPrice() {
        return price;
    }

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

    //创建有参的构造方法
    public Pizza(String name, int size, int price) {
        this.name = name;
        this.size = size;
        this.price = price;
    }

    //创建无参的构造方法
    public Pizza() {
    }

    //创建抽象方法展示类show()
    public abstract void show();
}

新建BaconPizza类: 

public class BaconPizza extends Pizza {
    //定义培根披萨的特有属性:克
    private int gramNum;

    //创建getXxx()和setXxx()方法
    public int getGramNum() {
        return gramNum;
    }

    public void setGramNum(int gramNum) {
        this.gramNum = gramNum;
    }

    //创建有参的构造方法
    public BaconPizza(String name, int size, int price, int gramNum) {
        super(name, size, price);
        this.gramNum = gramNum;
    }

    //创建无参的构造方法
    public BaconPizza() {

    }

    //重写展示类show()方法
    @Override
    public void show() {
        System.out.println("名称:" + getName() + "\n价格:" + getPrice() + "元" + "\n大小:" + getSize() + "寸" + "\n克数:" + gramNum );
    }

}

新建SeaFoodPizza类:

public class SeaFoodPizza extends  Pizza{
    //定义海鲜披萨的特有属性:配料
    private String PeiLiao;

    //创建get()Xxx和set()Xxx方法
    public String getPeiLiao() {
        return PeiLiao;
    }

    public void setPeiLiao(String peiLiao) {
        PeiLiao = peiLiao;
    }

    //创建有参的构造方法
    public SeaFoodPizza(String name,String peiLiao, int size, int price) {
        super(name, size, price);
        PeiLiao = peiLiao;
    }

    //创建无参的构造方法
    public SeaFoodPizza() {

    }

    //重写展示类show()方法
    @Override
    public void show() {
        System.out.println("名称:" + getName()+ "\n配料:" + PeiLiao  + "\n价格:" + getPrice() + "元" + "\n大小:" + getSize() + "寸" );
    }
}

 新建PizzaTest测试类:

import java.util.Scanner;
public abstract class PizzaTest {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        while (true){
            System.out.println("请选择想要制作的比萨(1、培根比萨 2、海鲜比萨)");
            int i = sc.nextInt();
            if(i==1){
                Pizza pizza = new BaconPizza();
                System.out.print("请输入培根克数:");
                int gramNum = sc.nextInt();
                System.out.print("请输入比萨大小:");
                int size = sc.nextInt();
                System.out.print("请输入比萨价格:");
                int price = sc.nextInt();
                pizza.setName("培根比萨");
                ((BaconPizza) pizza).setGramNum(gramNum);
                pizza.setSize(size);
                pizza.setPrice(price);
                pizza.show();
            }else if (i==2){
                Pizza pizza = new SeaFoodPizza();
                System.out.print("请输入配料信息:");
                String peiliao = sc.next();
                System.out.print("请输入比萨大小:");
                int size = sc.nextInt();
                System.out.print("请输入比萨价格:");
                int price = sc.nextInt();
                pizza.setName("海鲜比萨");
                ((SeaFoodPizza) pizza).setPeiLiao(peiliao);
                pizza.setSize(size);
                pizza.setPrice(price);
                pizza.show();
            }else if (i==0){
                System.out.println("欢迎下次光临!");
                break;
            }else {
                System.out.println("没有您想要制作的比萨,请重新选择您想要制作的比萨,输入0退出");
            }
        }

    }

}

运行结果:

请选择想要制作的比萨(1、培根比萨 2、海鲜比萨)
1
请输入培根克数:20
请输入比萨大小:13
请输入比萨价格:25
名称:培根比萨
价格:25元
大小:13寸
克数:20
请选择想要制作的比萨(1、培根比萨 2、海鲜比萨)
2
请输入配料信息:肉松、虾仁、芝士
请输入比萨大小:23
请输入比萨价格:26
名称:海鲜比萨
配料:肉松、虾仁、芝士
价格:26元
大小:23寸
请选择想要制作的比萨(1、培根比萨 2、海鲜比萨)
3
没有您想要制作的比萨,请重新选择您想要制作的比萨,输入0退出
请选择想要制作的比萨(1、培根比萨 2、海鲜比萨)
0
欢迎下次光临!

Process finished with exit code 0


从运行结果可以看出,相比1.0版本的Java多态披萨制作,本次编程显得更灵活更实用,与我们现实生活中更贴切。


到底啦!给个关注吧!

 类似资料: