需求说明编写程序,接收用户输入的信息,选择需要制作的披萨。可供选择的披萨有:培根比萨和海鲜披萨。
实现思路:
- 分析培根披萨和海鲜披萨
- 定义披萨类
- 属性:名称、价格、大小
- 方法:展示
- 定义培根比萨和海鲜披萨继承自披萨类
- 定义披萨工厂类,根据输入信息产生具体的披萨对象
程序运行结果如图所示
具体代码:
披萨类:
package com.jr.five.pizza;
public class Pizza {
private String name;
private int price;
private String size;
public Pizza() {
}
public Pizza(String name, int price, String 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 String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public void show(){
System.out.println("名称:"+name);
System.out.println("价格:"+price);
System.out.println("大小"+size);
}
}
培根披萨类:
package com.jr.five.pizza;
import java.util.Scanner;
public class PgPizza extends Pizza {
private int nums;
public PgPizza() {
}
public PgPizza(String name, int price, String size, int nums) {
super(name, price, size);
this.nums = nums;
}
public int getNums() {
return nums;
}
public void setNums(int nums) {
this.nums = nums;
}
@Override
public void show() {
super.show();
System.out.println("培根克数" + nums);
}
}
海鲜披萨类:
package com.jr.five.pizza;
public class HxPizza extends Pizza {
private String ingredient;
public HxPizza() {
}
public HxPizza(String name, int price, String size, String ingredient) {
super(name, price, size);
this.ingredient = ingredient;
}
public String getIngredient() {
return ingredient;
}
public void setIngredient(String ingredient) {
this.ingredient = ingredient;
}
@Override
public void show() {
super.show();
System.out.println("配料: " + ingredient);
}
}
披萨工厂类:
package com.jr.five.pizza;
import java.util.Scanner;
public class Factory {
public void createPizza() {
System.out.println("请输入想要制作的披萨(1、培根披萨 2、海鲜披萨)");
Scanner input = new Scanner(System.in);
String pizzaName = input.nextLine();
Pizza p = null;
if(pizzaName.equals("1")) {
System.out.println("请输入培根克数:");
Scanner sc = new Scanner(System.in);
int nums = sc.nextInt();
System.out.println("请输入披萨大小:");
String size = sc.next();
System.out.println("请输入培披萨价格:");
int price = sc.nextInt();
p = new PgPizza("培根披萨",price,size,nums);
} else if(pizzaName.equals("2")) {
System.out.println("请输入配料信息:");
Scanner sc = new Scanner(System.in);
String ingredient = sc.next();
System.out.println("请输入披萨大小:");
String size = sc.next();
System.out.println("请输入培披萨价格:");
int price = sc.nextInt();
p = new HxPizza("海鲜披萨", price, size, ingredient);
}else{
System.out.println("输入无效");
return;
}
p.show();
}
}
测试类:
package com.jr.five.pizza;
public class Test {
public static void main(String[] args) {
Factory factory = new Factory();
factory.createPizza();
}
}
总结:
运用面向对象的思想,使用封装,继承,多态来完成题目要求。对于此类问题要先明确需求,根据需求确定需要分几个类来实现目标,确定类之后,从相似的类中,找出重复的属性和方法,把它们提取出来放到父类中,应用继承来避免重复的代码书写。使用private来修饰成员变量增强代码的安全性,最后运用多态,提高代码的扩展性,可维护性。
注意:运用多态时需要对父类的普通方法进行重写,运用时记得声明父类new子类。