在java中实现层次继承

在java中实现层次继承,java,inheritance,hierarchical,Java,Inheritance,Hierarchical,我有简单的用例,但至少对我来说很棘手 我有课 public class Operation { private int a,b; public Operation(){ } public Operation(int a,int b){ this.a=a; this.b=b; } public int calculate() { return (a+b); }

我有简单的用例,但至少对我来说很棘手

我有课

   public class Operation {
    private int a,b;
    public Operation(){

    }
    public Operation(int a,int b){

        this.a=a;
        this.b=b;       
    }
    public int calculate()
    {
        return (a+b);
    }

}
和四个扩展操作的类

public class Addition extends Operation {
    public Addition(){
        super();
    }
    public Addition(int a,int b){
        super(a,b);     
    }
    public int calculate(int a,int b)
    {

                return (a+b);
    }

}
public class Subtraction extends Operation {
    public Subtraction()
    {

    }
    public Subtraction(int a,int b)
    {
        super(a,b); 
    }
    public int calculate(int a,int b)
    {
        return (a-b);
    }

}
public class Multiplication extends Operation {
    public Multiplication()
    {

    }
    public Multiplication(int a,int b)
    {
        super(a,b); 
    }
    public int calculate(int a,int b)
    {
        return (a*b);
    }

}
public class Division extends Operation {
    public Division()
    {

    }
    public Division(int a,int b)
    {
        super(a,b); 
    }
    public int calculate(int a,int b)
    {
        return (a/b);
    }


}
我的主要方法是遵循

public class CalculationTest {

    public static void main(String[] args) {
        Operation op=new Addition(100,200);
        System.out.println(op.calculate());
        op=new Subtraction();
        System.out.println(op.calculate()); //this should print -100 as output
        op=new Multiplication();
        System.out.println(op.calculate()); //this should print 2000 as output
        op=new Division();
        System.out.println(op.calculate()); //this should print 0 as output


    }

}
我必须得到输出 300 -100 2000 0 但我得到的输出是 300 0 0 0

提前谢谢

我必须得到输出300-10020000,但我得到的输出是30000

那是因为你没有给他们任何意见

Operation op=new Addition(100,200);
这是有输入的,而且有效

 op=new Subtraction();
这没有输入,因此值默认为0,结果为0

如果要减去两个值,仍然必须提供它们,请尝试

 op = new Subtraction(100, 200);

你调试代码了吗?你有没有用笔和纸把它穿过?你知道什么是无参数构造函数吗?你知道默认字段值是什么吗?我对Java非常陌生,这是我在Stackoverflow中的第一篇文章。对不起。我的用例在实例化减法、乘法和除法类时不提供任何参数。这些值必须来自第一次初始化。这就是我所困惑的。再次抱歉,如果我做得很糟糕wrongs@arjun我建议你检查一下这是否是你家庭作业的真正要求,因为按照你的建议去做没有任何意义。更有可能的是,您会以非常不同的方式编写代码。你确定计算不应该取值吗?是的,根据要求,只有加法构造函数接受值,而减法、乘法和除法构造函数都不接受值。甚至计算方法也不接受参数。分配给加法构造函数的值必须来自/应用于剩余的类。您可以这样做,但这将是非常糟糕的编程实践。你可以让你的字段
私有静态int a,b
,但就像我说的,不要在真正的程序中这样做。非常感谢@Peter Lawrey不,我明白了。还有一个小问题。如何将计算方法从操作重写到其余类。我的代码有问题。它不是重写,而是只接受操作的计算方法,并为所有方法提供相同的输出