多态的含义和作用 和向上转型和向下转型

来源:互联网 发布:手机视频软件 编辑:程序博客网 时间:2024/06/11 15:15

1. 多态的含义和作用

多态:多样化
多态允许将子类的对象当作父类的对象使用,某父类型的引用指向其子类

型的对象,调用的方法是该子类型的方法
多态的作用:
·大大提高程序的可复用性。
·可以提高可扩充性和可维护性。

2. 向上转型和向下转型

向上转型很安全,子类转成父类(父类出面,而子类做事)
向下转型:父类再转成原有的子类,通过强制转换


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

实现思路及关键代码

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

2) 定义比萨类

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

4) 方法:展示

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

6) 定义比萨工厂类,根据输入信息产生具体的比萨对象

程序运行结果如图所示


 package com.pizza;

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

package com.pizza;

public class Peigpz extends Pizza{
     int shuliang;
    public Peigpz(String name,double price,int size,int

sl) {
       super(name, price, size);
       this.shuliang=sl;
    }
    public void show(){
        System.out.println("名称:"+name);
        System.out.println("价格:"+price+"元");
        System.out.println("大小"+size+"寸");
        System.out.println("培根个数:"+shuliang);
    }
    
}

package com.pizza;

public class Haixpz extends Pizza{
     String peiliao;
        public Haixpz(String name,double price,int

size,String pl) {
           super(name, price, size);
           this.peiliao=pl;
        }
        public void show(){
            System.out.println("名称:"+name);
            System.out.println("价格:"+price+"元");
            System.out.println("大小"+size+"寸");
            System.out.println("配料:"+peiliao);
        }
}


package com.pizza;

import java.util.Scanner;

public class PizzaFactory {
    public static void main(String[] args) {
        System.out.println("请选择想要制作的比萨(1.培根比萨2.海鲜比萨):");
        Scanner sc=new Scanner(System.in);
        int i=sc.nextInt();
        if(i==1){
            System.out.println("请输入培根个数:");
            int gs=sc.nextInt();
            System.out.println("请输入比萨大小:");
            int size=sc.nextInt();
            System.out.println("请输入比萨价格:");
            int price=sc.nextInt();
            Peigpz p=new Peigpz("培根比萨", 105, 12,25);
            p.show();
            }else if(i==2){
            System.out.println("请输入配料信息:");
            String info=sc.next();
            System.out.println("请输入比萨大小:");
            int size=sc.nextInt();
            System.out.println("请输入比萨价格:");
            int price=sc.nextInt();
            Haixpz h=new Haixpz("海鲜比萨", 78, 10,"虾仁、鱿鱼卷、墨鱼");
            h.show();
        }    
    }        
}

 



原创粉丝点击