需求:
现在要给顾客提供两个选择,一个是主菜,还有一个是饮品。除了都能显示商品名与价格外,饮品可以选择是常温的、冰镇的;而主菜可以选择加不同分量的辣椒,但需要额外价格。
顾客能够看到商品列表,并查找对应商品。
思路;
这里需要用到抽象类,能够让子类继承父类成员变量,以及能够重写相关的方法。然后写一个管理类,定义数组以及无参构造,写增加、展示商品集合,通过商品名查询的方法。然后新建一个集合,然后存商品信息,再调方法操作。
步骤:
1.创建基本商品类,里面定义商品名和价格,然后构造器,getter、setter方法,重写toString方法。
基本商品类Product
abstract class Product {
protected String name;
protected double price;
public Product(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
@Override //重载可以省略
public String toString() {
return name + " - 价格: " + price + "元";
}
}
2.再让饮品类Drink和主菜类MainDish继承基本商品类Product,再定义成员变量,温度temperature和辣味spiciness,构造器调父类成员变量,再重写toString方法,
Drink类和MainDish类:
class Drink extends Product {
private String temperature; // 温度:常温或冰镇
public Drink(String name, double price, String temperature) {
super(name, price);
this.temperature = temperature;
}
@Override
public String toString() {
return super.toString() + " (" + temperature + ")";
}
}
// 主菜类
class MainDish extends Product {
private String spiciness; // 辣度:不辣、微辣、特辣
public MainDish(String name, double price, String spiciness) {
super(name, price);
this.spiciness = spiciness;
// 根据辣度调整价格
if (spiciness.equals("微辣") || spiciness.equals("特辣")) {
this.price += 0.5;
}
}
@Override
public String toString() {
return super.toString() + " (" + spiciness + ")";
}
}
3.再建一个商品管理类ProductManager,私有化集合成员变量,可以用无参构造器生成这个集合对象,再专门写方法对这个对象进行添加,列举和查找功能
ProductManager商品管理类;
class ProductManager {
private List<Product> products;
public ProductManager() {
products = new ArrayList<>();
}
// 添加商品
public void addProduct(Product product) {
products.add(product);
}
// 显示所有商品
public void displayProducts() {
for (Product product : products) {
System.out.println(product);
}
}
// 根据名称查找商品
public Product findProductByName(String name) {
for (Product product : products) {
if (product.getName().equals(name)) {
return product;
}
}
return null;
}
}
4.最后在测试类Main中,新建集合对象,往里添加数组,再列举和查询
Main测试类:
public class Main {
public static void main(String[] args) {
// 创建商品管理器
ProductManager manager = new ProductManager();
// 添加酒水类商品
manager.addProduct(new Drink("可乐", 3.0, "常温"));
manager.addProduct(new Drink("雪碧", 3.0, "冰镇"));
manager.addProduct(new Drink("冰红茶", 3.0, "常温"));
// 添加主菜类商品
manager.addProduct(new MainDish("烤鱼", 15.0, "不辣"));
manager.addProduct(new MainDish("涮羊肉", 30.0, "微辣"));
manager.addProduct(new MainDish("烩面", 10.0, "特辣"));
// 显示所有商品
System.out.println("所有商品信息:");
manager.displayProducts();
// 查找并调用某个商品
System.out.println("\n查找商品:");
Product product = manager.findProductByName("涮羊肉");
if (product != null) {
System.out.println("找到商品: " + product);
} else {
System.out.println("未找到该商品!");
}
}
}
全部代码:
import java.util.ArrayList;
import java.util.List;
// 商品基类
abstract class Product {
protected String name;
protected double price;
public Product(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
@Override //重写可以省略
public String toString() {
return name + " - 价格: " + price + "元";
}
}
// 酒水类
class Drink extends Product {
private String temperature; // 温度:常温或冰镇
public Drink(String name, double price, String temperature) {
super(name, price);
this.temperature = temperature;
}
@Override
public String toString() {
return super.toString() + " (" + temperature + ")";
}
}
// 主菜类
class MainDish extends Product {
private String spiciness; // 辣度:不辣、微辣、特辣
public MainDish(String name, double price, String spiciness) {
super(name, price);
this.spiciness = spiciness;
// 根据辣度调整价格
if (spiciness.equals("微辣") || spiciness.equals("特辣")) {
this.price += 0.5;
}
}
@Override
public String toString() {
return super.toString() + " (" + spiciness + ")";
}
}
// 商品管理类
class ProductManager {
private List<Product> products;
public ProductManager() {
products = new ArrayList<>();
}
// 添加商品
public void addProduct(Product product) {
products.add(product);
}
// 显示所有商品
public void displayProducts() {
for (Product product : products) {
System.out.println(product);
}
}
// 根据名称查找商品
public Product findProductByName(String name) {
for (Product product : products) {
if (product.getName().equals(name)) {
return product;
}
}
return null;
}
}
// 测试类
public class Main {
public static void main(String[] args) {
// 创建商品管理器
ProductManager manager = new ProductManager();
// 添加酒水类商品
manager.addProduct(new Drink("可乐", 3.0, "常温"));
manager.addProduct(new Drink("雪碧", 3.0, "冰镇"));
manager.addProduct(new Drink("冰红茶", 3.0, "常温"));
// 添加主菜类商品
manager.addProduct(new MainDish("烤鱼", 15.0, "不辣"));
manager.addProduct(new MainDish("涮羊肉", 30.0, "微辣"));
manager.addProduct(new MainDish("烩面", 10.0, "特辣"));
// 显示所有商品
System.out.println("所有商品信息:");
manager.displayProducts();
// 查找并调用某个商品
System.out.println("\n查找商品:");
Product product = manager.findProductByName("涮羊肉");
if (product != null) {
System.out.println("找到商品: " + product);
} else {
System.out.println("未找到该商品!");
}
}
}