Java多态实现小案例-----饮料购买与购买比萨

目录

前言

一、多态是什么?

二、操作步骤

1.饮料购买

2.购买比萨

总结



前言

多态前提和体现

有继承关系 有方法重写,没有重写的话,需要调用父类中的对应方法 有父类引用指向子类对象

成员访问特点 

成员变量 编译看左边,运行看左边           //左边需要有一个继承关系,看父类里有没有

成员方法 编译看左边,运行看右边

静态方法 编译看左边,运行看左边


提示:以下是本篇文章正文内容,下面案例可供参考

一、多态是什么?

父类引用指向子类对象

格式:

父类名   变量名 = new   子类对象()

二、操作步骤

先考虑有哪些类,类中有哪些共同的属性方法来提取一个父类,每个类中特有的属性和方法,

然后再去编写

1.饮料购买

1.  编写程序实现软料购买:编写程序,接收用户输入的信息,选择购买的饮料。可供 择的饮料有:咖啡、矿泉水和可乐。其中,购买咖啡时可以选择:加糖、加奶还

么都不加。购买可乐时可以选择:买可口可乐还是百事可乐。

代码如下(示例):

import java.util.Scanner;  


 abstract class Beverage{      //一个抽象的父类,饮料
    private String name;
    private int capacity;

    public Beverage() {
    }

    public Beverage(String name, int capacity) {
        this.name = name;
        this.capacity = capacity;
    }

    public String getName() {
        return name;
    }

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

    public int getCapacity() {
        return capacity;
    }

     public void setCapacity(int capacity) {
         this.capacity = capacity;
     }

     public abstract void show();
}

class Coffee extends Beverage{     //父类饮料的一个子类 咖啡
    private String mixture;

    public String getMixture(String mixture) {
        return mixture;
    }

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

    public Coffee(String mixture) {
        this.mixture = mixture;
    }

    public Coffee() {
    }

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

    @Override
    public void show() {
        System.out.println("名称: "+getName());
        System.out.println("添加配料: "+mixture);
        System.out.println("容量: "+getCapacity());
    }
}
class Water extends Beverage{   // 父类的另一个子类  矿泉水

    public Water() {
    }

    public Water(String name, int capacity) {
        super(name, capacity);
    }




    @Override
    public void show() {
        System.out.println("名称:"+getName());
        System.out.println("容量:"+getCapacity());

    }
}
class Calendar extends Beverage{     //父类的第三个类  可乐
     private String type;

    public String getType() {
        return type;
    }

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

    public Calendar() {
    }

    public Calendar(String name, int capacity,String type) {
        super(name, capacity);
        this.type = type;
    }

    @Override
    public void show() {
        System.out.println("名称:"+getName());
        System.out.println("种类:"+getType());
        System.out.println("容量:"+getCapacity());

    }
}
public class HomeWork2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要买的饮料:1、咖啡 2、矿泉水 3、可乐");
        int i = sc.nextInt();
        if(i == 1){
            Beverage beverage1 = new Coffee();
            beverage1.setName("咖啡");
            System.out.println("请输入购买容量: ");
            int capacity1 = sc.nextInt();
            beverage1.setCapacity(capacity1);
            System.out.println("请输入想要的配料:1.加糖、2.加奶、3.什么都不加");
            int j = sc.nextInt();
            if(j==1){
                ((Coffee)beverage1).setMixture("加糖");
            } else if (j == 2) {
                ((Coffee)beverage1).setMixture("加奶");

            }else {
                ((Coffee)beverage1).setMixture("什么都不加");
            }
            System.out.println("你购买的信息如下");
            beverage1.show();
        } else if (i == 2) {
            Beverage beverage2 = new Water();
            beverage2.setName("矿泉水");
            System.out.println("请输入购买容量: ");
            int capacity2 = sc.nextInt();
            beverage2.setCapacity(capacity2);
            System.out.println("你购买的信息如下");
            beverage2.show();
        } else if (i == 3) {
            Beverage beverage3 = new Calendar();
            beverage3.setName("可乐");
            System.out.println("请输入你要买的可乐:1.可口可乐,2.百事可乐");
            int j = sc.nextInt();
            if(j == 1){
                ((Calendar)beverage3).setName("可口可乐"); //多态的向下转型
                beverage3.setName("可乐");
                System.out.println("请输入购买容量: ");
                int capacity2 = sc.nextInt();
                beverage3.setCapacity(capacity2);
                ((Calendar) beverage3).setType("可口可乐");
                System.out.println("你购买的信息如下");
                beverage3.show();
            } else if (j == 2) {
                ((Calendar)beverage3).setName("百事可乐");
                beverage3.setName("可乐");
                System.out.println("请输入购买容量: ");
                int capacity2 = sc.nextInt();
                beverage3.setCapacity(capacity2);
                ((Calendar) beverage3).setType("百事可乐");
                System.out.println("你购买的信息如下");
                beverage3.show();
            }else {
                System.out.println("没有其他种类,在考虑一下吧");
            }
        }else {
            System.out.println("抱一丝,这里没有你想要的");
        }
    }
}

 

2.购买比萨

2. 编写程序实现比萨制作。需求说明编写程序,接收用户输入的信息,选择需要制作 比萨。可供选择的比萨有:培根比萨和海鲜比萨。

现思路及关键代码

1)     分析培根比萨和海鲜比

2)     定义比萨类

3)     属性:名称、价格、大小

4)     方法:展示

5)     定义培根比萨和海鲜比萨继承自比萨

6)     定义测试类,根据输入信息产生具体的比萨对象 程序运行结果如图所示

代码如下(示例):

import java.util.Scanner;

class Pizza{
    public Pizza() {
    }

    public Pizza(String name, int price, int size) {
        this.name = name;
        this.price = price;
        this.size = size;
    }

    public String getName() {
        return name;
    }

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

    public int getPrice() {
        return price;
    }

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

    public int getSize() {
        return size;
    }

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

    private String name;
    private int price;
    private int size;
    public void show(){
        System.out.println("名称:"+name);
        System.out.println("价格:"+price+"元");
        System.out.println("大小:"+size+"寸");

    }
}
class BaconPizza extends Pizza{
    private int bacon;
    public BaconPizza() {
    }

    public BaconPizza(int bacon,String name, int price, int size) {
        super(name, price, size);
        this.bacon = bacon;
    }

    public int getBacon() {
        return bacon;
    }

    public void setBacon(int bacon) {
        this.bacon = bacon;
    }

    @Override
    public void show() {
        super.show();
        System.out.println("培根克数:" + bacon);
    }
}
class SeafoodPizza extends Pizza{
    private String dosing;

    public SeafoodPizza() {
    }

    public SeafoodPizza(String dosing) {
        this.dosing = dosing;
    }

    public SeafoodPizza( String dosing,String name, int price, int size) {
        super(name, price, size);
        this.dosing = dosing;
    }

    public String getDosing() {
        return dosing;
    }

    public void setDosing(String dosing) {
        this.dosing = dosing;
    }

    @Override
    public void show() {
        super.show();
        System.out.println("配料:"+dosing);
    }
}

class PizzaPlant{
    public Pizza method(int result){
        Scanner sc = new Scanner(System.in);
        Pizza p = new Pizza();
        if(result == 1){
            System.out.println("请输入培根克数:");
            int bacon = sc.nextInt();
            System.out.println("请输入比萨大小:");
            int size = sc.nextInt();
            System.out.println("亲输入比萨价格:");
            int price = sc.nextInt();
            p = new BaconPizza(bacon,"培根比萨",price,size);
            p.show();
        }else if(result ==2) {
            System.out.println("请输入配料信息:");
            String dosing = sc.next();
            System.out.println("请输入比萨大小:");
            int size = sc.nextInt();
            System.out.println("亲输入比萨价格:");
            int price = sc.nextInt();
            p = new SeafoodPizza(dosing,"海鲜披萨",price,size);
            p.show();
        }
        else {
            System.out.println("没有其他种类了,请在两种方式里选择一个吧");
        }

        return p;
    }

}

public class HomeWork {
    public static void main(String[] args) {
        System.out.print("请选择想要制作的披萨(1.培根披萨  2.海鲜披萨):");
        int num = new Scanner(System.in).nextInt();
        PizzaPlant pizzaPlant = new PizzaPlant();
        pizzaPlant.method(num);

    }
}

总结

多态是面向对象编程中的一个重要概念,它允许不同类型的对象对同一消息做出不同的响应。以下是多态的几个好处:

  1. 提高代码的可扩展性:多态使得代码可以随时添加新的实现,而不影响系统的其他部分。这样,一个系统可以随着需求的变化而不断改变。

  2. 提高代码的可维护性:因为多态允许不同类型的对象使用相同的接口,这使得代码更易于理解和修改。如果我们想要改变一个方法的行为,只需要改变它的实现即可,而不需要修改其他相关的代码。

  3. 简化代码:多态可以将代码中的条件语句减少到最少。这样,代码会更简洁,并且更容易维护和测试。

  4. 提高代码的可读性:多态使得代码更容易理解,因为每个对象都有自己的行为特征,并且这些特征都是通过相同的接口来实现的。因此,多态可以提高代码的可读性和可理解性。

总之,多态是一种灵活、可扩展、易维护的编程方式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值