Java 继承订单和 CreditOrders 问题

Java Inheritance With Orders and CreditOrders Issue

SMC 接受客户的订单和信用订单。对于订单,客户预先支付订单价值。对于信用订单,SMC 将订单的全部美元价值记入客户贷方(换句话说,客户不应为订购的产品提前付款)。对于信用订单,客户和 SMC 代表协商在交付订购的物品时客户将在订单美元价值之上支付的利息(作为订单价值的百分比)。利息值范围应该在10到20之间。

对于第一部分,我认为我做对了。 (class Order 定义了实例变量 orderId、clientName 和 orderValue。它还定义了一个带有参数的构造函数、方法 toString 和实例变量的 get/set 类型方法。)

public class Order {

public int orderId;
public String clientName;
public int orderValue;

/**
 * @param orderId
 * @param clientName
 * @param orderValue
 */
public Order(int orderId, String clientName, int orderValue) {
    super();
    this.orderId = orderId;
    this.clientName = clientName;
    this.orderValue = orderValue;
}

/**
 * @return the orderId
 */
public int getOrderId() {
    return orderId;
}

/**
 * @param orderId the orderId to set
 */
public void setOrderId(int orderId) {
    this.orderId = orderId;
}

/**
 * @return the clientName
 */
public String getClientName() {
    return clientName;
}

/**
 * @param clientName the clientName to set
 */
public void setClientName(String clientName) {
    this.clientName = clientName;
}

/**
 * @return the orderValue
 */
public int getOrderValue() {
    return orderValue;
}

/**
 * @param orderValue the orderValue to set
 */
public void setOrderValue(int orderValue) {
    this.orderValue = orderValue;
}

public String toString() {
    return "Order [orderId=" + orderId + ", clientName=" + clientName
            + ", orderValue=" + orderValue + "]";
}


}

然后对于第二部分我很困惑,这就是我到目前为止所知道的。(class CreditOrder 继承了 class Order。这个 class 继承了实例变量class Order 并定义了其特定的实例变量 interest。它还定义了一个带参数的构造函数,实例变量 interest 的 get/set 方法,新方法 getCreditOrderTotalValue 并覆盖了 toString 方法。)我不确定如果正确完成了兴趣,我不确定如何处理 "getCreditOrderTotalValue" 并覆盖 toString 方法。

public class CreditOrder extends Order {

public int interest;

public CreditOrder(int orderId, String clientName, int orderValue) {
    super(orderId, clientName, orderValue);

}

/**
 * @return the interest
 */
public int getInterest() {
    return interest;
}

/**
 * @param interest
 *            the interest to set
 */
public void setInterest(int interest) {
    this.interest = interest;
}

    //getCreditOrderTotalValue

    //toString
}

首先,您需要清楚继承以及事物在面向对象范例中的工作方式。 toString() 方法来自 java.lang.Object 并默认自动继承给所有对象。以及在实现继承(受保护)的情况下正确使用访问说明符。

因此,如果允许我对 class 结构提出一些更改建议,那将是...

public class Order {
   private int orderValue;
   //getters and setters, make protected
   public Order(int orderValue) {
      this.orderValue = orderValue;
   }
   protected int calculateOrderValue() {
      return this.orderValue;
   }
}
public class CreditOrder extends Order {
   private int orderValue;
   private float interestRate;
   //getters and setters for interestRate
   public CreditOrder(int orderValue, float interestRate) {
     super(orderValue);
     this.orderValue = orderValue;
     this.interestRate = interestRate;
   }
   public int calculateOrderValue() {
      return getOrderValue() * getInterestRate();
   }
}