Java 如何在修改该属性的子类中保留超级类属性的跟踪?
我有两个类Order和ValidatedOrder。ValidatedOrder是order的一个子类,在该类中,我们指定验证订单的助手的ID以及他可能对最终价格应用的折扣。然而,我想保留从超级类继承的旧价格的痕迹。 这是Order类:Java 如何在修改该属性的子类中保留超级类属性的跟踪?,java,inheritance,Java,Inheritance,我有两个类Order和ValidatedOrder。ValidatedOrder是order的一个子类,在该类中,我们指定验证订单的助手的ID以及他可能对最终价格应用的折扣。然而,我想保留从超级类继承的旧价格的痕迹。 这是Order类: public class Commande { private int idCommande; private int idClient ; private String Commentaire; private ArrayList<LigneComma
public class Commande {
private int idCommande;
private int idClient ;
private String Commentaire;
private ArrayList<LigneCommande> Liste ;
public double calculMontantCommande(){
int i ;
for (i=0; i<this.getListe().size();i++){
montant= montant + (Liste.get(i).getMontantCommande() * Liste.get(i).getQuantiteCommande());
}
return montant ;
}
public class CommandeValidee extends Commande {
private int Assistant ;
private Double reduction ;
@Override
public double calculMontantCommande() {
// TODO Auto-generated method stub
return (super.calculMontantCommande() * reduction);
}
任何关于如何解决这一问题的线索都将非常有用!
谢谢
返回“旧价格”(不减价的价格)
因此,在您的commandEvalide
类中,您可以添加如下方法
public double getPriceWithoutReduction() {
return super.calculMontantCommande();
}
然后你可以通过调用这个方法得到它
CommandeValidee order = ... //Load somehow
double priceWithoutReduction = order.getPriceWithoutReduction();
无论如何,我建议您在开发应用程序时使用英语。这是因为您将使用的大多数库和代码(语言本身)都是用英语编写的。如果类名和方法名不是用英语写的,那么像我们这样的人帮助您也是一个问题。想象一下,如果它是用中文写的:D你所说的“保持跟踪”实际上是什么意思?创建一个变量,并在每次更改该值时保持该变量的旧值。但是我认为你理解iheritance的方式是错误的,你的意思是命令和验证命令是两个不同的东西?!!希望这对你有帮助。没有第二个价格。有一个折扣字段。注意:千万不要用浮点表示货币。这些金额都应该是
BigDecimal
。谢谢您的帮助!我通常用英语写代码,但很抱歉我现在在法国D
CommandeValidee order = ... //Load somehow
double priceWithoutReduction = order.getPriceWithoutReduction();