Java 如何在修改该属性的子类中保留超级类属性的跟踪?

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

我有两个类Order和ValidatedOrder。ValidatedOrder是order的一个子类,在该类中,我们指定验证订单的助手的ID以及他可能对最终价格应用的折扣。然而,我想保留从超级类继承的旧价格的痕迹。 这是Order类:

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