订单和CreditOrders问题的Java继承问题

时间:2015-01-22 00:44:22

标签: java inheritance

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

对于第一部分,我相信我做得很好。 (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 + "]";
}


}

然后对于第二部分我很困惑,这就是我到目前为止。(CreditOrder类继承了Order类。这个类继承了Order类的实例变量,并定义了它特定的实例变量兴趣。它还定义了一个带有参数的构造函数,实例变量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
}

1 个答案:

答案 0 :(得分:0)

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

因此,如果我被允许在课程结构中提出一些改变,那就是......

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();
   }
}