📜  Java |类和对象|问题5(1)

📅  最后修改于: 2023-12-03 15:01:33.040000             🧑  作者: Mango

Java | 类和对象 | 问题5

在Java中,类是面向对象编程的基本构造。类中定义了对象的属性和方法。同时,类可以派生出子类。本文将介绍Java中类和对象的知识,聚焦于问题5。

问题描述

为了模拟一个货物在物流中心中的出入库记录以及不同状态下的费用计算,设计如下类:

  1. 货物类:Item类,包含属性:货物Id、名称、重量、进价、出价等,以及输出货物详细信息的方法

  2. 入库类:InStock类,包含属性:入库Id、货物Id、入库时间、入库数量、货源地和目的地等,以及计算入库的费用的方法

  3. 出库类:OutStock类,包含属性:出库Id、货物Id、出库时间、出库数量、销售地结算地等,以及计算出库的费用的方法

请你设计以上类的简单继承关系,并完成类的定义。

类的定义
/**
 * 货物类
 */
public class Item {
    private String itemId;  // 货物Id
    private String itemName;  // 货物名称
    private double weight;  // 货物重量
    private double buyPrice;  // 进价
    private double sellPrice;  // 出价

    public Item(String itemId, String itemName, double weight, double buyPrice, double sellPrice) {
        this.itemId = itemId;
        this.itemName = itemName;
        this.weight = weight;
        this.buyPrice = buyPrice;
        this.sellPrice = sellPrice;
    }

    public void display() {
        System.out.println("货物Id:" + itemId);
        System.out.println("名称:" + itemName);
        System.out.println("重量:" + weight);
        System.out.println("进价:" + buyPrice);
        System.out.println("出价:" + sellPrice);
    }
}

/**
 * 入库类
 */
public class InStock extends Item {
    private String inStockId;  // 入库Id
    private String fromAddr;  // 货源地
    private String toAddr;  // 目的地
    private long inDate;  // 入库时间
    private int count;  // 入库数量

    public InStock(String inStockId, String itemId, String itemName, double weight, double buyPrice, double sellPrice,
                   String fromAddr, String toAddr, long inDate, int count) {
        super(itemId, itemName, weight, buyPrice, sellPrice);
        this.inStockId = inStockId;
        this.fromAddr = fromAddr;
        this.toAddr = toAddr;
        this.inDate = inDate;
        this.count = count;
    }

    public double getFee() {
        return 0.1 * super.getBuyPrice() * count;
    }
}

/**
 * 出库类
 */
public class OutStock extends Item {
    private String outStockId;  // 出库Id
    private String saleAddr;  // 销售地
    private String settleAddr;  // 结算地
    private long outDate;  // 出库时间
    private int count;  // 出库数量

    public OutStock(String outStockId, String itemId, String itemName, double weight, double buyPrice, double sellPrice,
                    String saleAddr, String settleAddr, long outDate, int count) {
        super(itemId, itemName, weight, buyPrice, sellPrice);
        this.outStockId = outStockId;
        this.saleAddr = saleAddr;
        this.settleAddr = settleAddr;
        this.outDate = outDate;
        this.count = count;
    }

    public double getFee() {
        return 0.1 * super.getSellPrice() * count;
    }
}
示例
public class Main {
    public static void main(String[] args) {
        // 测试入库类
        InStock inStock = new InStock("001", "00p01", "酸奶", 1000, 2.5, 3.0, "北京", "上海", System.currentTimeMillis(), 500);
        inStock.display();
        System.out.println("费用:" + inStock.getFee());

        // 测试出库类
        OutStock outStock = new OutStock("101", "00p01", "酸奶", 1000, 2.5, 3.0, "上海", "北京", System.currentTimeMillis(), 300);
        outStock.display();
        System.out.println("费用:" + outStock.getFee());
    }
}

输出结果:

货物Id:00p01
名称:酸奶
重量:1000.0
进价:2.5
出价:3.0
费用:125.0
货物Id:00p01
名称:酸奶
重量:1000.0
进价:2.5
出价:3.0
费用:90.0

以上就是Java中类和对象问题5的详细说明和代码实现,通过继承和重写getFee方法,可以实现简单的费用计算。