案例三:商品库存统计系统(核心:static + 继承 + 多态 + 抽象类 + final 属性)

张开发
2026/4/14 18:07:18 15 分钟阅读

分享文章

案例三:商品库存统计系统(核心:static + 继承 + 多态 + 抽象类 + final 属性)
需求:抽象类Product商品包含final商品编号、名称、价格静态统计总库存数、静态方法获取总库存抽象方法getSellPrice()获取售卖价子类实现子类Phone手机原价售卖、Laptop笔记本9 折售卖每创建一个商品对象静态库存数自动 1多态遍历商品数组计算所有商品总价值打印库存信息。编号P001 | 名称iPhone15 | 售价5999.0 编号L001 | 名称联想小新 | 售价4499.1 编号P002 | 名称小米14 | 售价3999.0 ------------------------ 商品总库存3 所有商品总价值14497.1思路分析步骤 1定义抽象类Product顶层设计用final修饰商品编号、名称、价格确保这些核心属性不可被修改声明static静态变量统计总库存所有商品共享每创建一个商品对象就自动 1定义抽象方法getSellPrice()强制子类根据自身规则实现 “售卖价计算逻辑”提供静态方法获取总库存封装库存数据的访问逻辑。public abstract class Product { final String id; String name; double price; //静态总库存数 private static int total 0; //静态方法获取总库存 public static int getTotal(){ return total; } //抽象方法 public abstract double getSellPrice(); public Product(String id, String name, double price) { this.id id; this.name name; this.price price; total; } public String getId() { return id; } public String getName() { return name; } public double getPrice() { return price; } }步骤 2实现子类 Phone和Laptop继承 方法重写子类继承Product通过构造方法初始化父类的final属性重写getSellPrice()手机按原价返回笔记本按 9 折原价 ×0.9返回子类构造方法中触发 “总库存 1” 的逻辑可放在父类构造方法中简化子类代码。public class Laptop extends Product{ public Laptop(String id, String name, double price) { super(id, name, price); } Override public double getSellPrice() { return getPrice() * 0.9; } }public class Phone extends Product{ public Phone(String id, String name, double price) { super(id, name, price); } Override public double getSellPrice() { return getPrice(); } }步骤 4多态遍历计算总价值多态核心应用遍历Product集合通过父类引用调用子类重写的getSellPrice()自动适配不同商品的售价规则累加所有商品的售卖价得到总价值。步骤 5输出结果打印库存和总价值调用静态方法获取总库存打印每个商品的详情最后输出总库存和总价值。import java.util.ArrayList; public class ProductTest { public static void main(String[] args) { //创建集合 ArrayListProduct products new ArrayList(); products.add(new Phone(P001, iPhone15, 5999)); products.add(new Laptop(L001, 联想小新, 4999)); products.add(new Phone(P002, 小米14, 3999)); //总价值 double totalValue 0; //遍历集合 for (int i 0; i products.size(); i) { Product p products.get(i); System.out.println(编号 p.getId() | 名称 p.getName() | 售价 p.getSellPrice()); totalValue p.getSellPrice(); } //统计信息 System.out.println(------------------------); System.out.println(商品总库存 Product.getTotal()); System.out.println(所有商品总价值 totalValue); } }

更多文章