【问题标题】:Implementing hierarchical inheritance in java在java中实现层次继承
【发布时间】:2016-04-14 22:59:50
【问题描述】:

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

我有课

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

}

以及扩展 Operation 的四个类

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

提前致谢

【问题讨论】:

  • 你调试过你的代码吗?你有没有用笔和纸走过它?你知道什么是无参数构造函数吗?你知道什么是默认字段值吗?

标签: java inheritance hierarchical


【解决方案1】:

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

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

Operation op=new Addition(100,200);

这有输入并且有效。

 op=new Subtraction();

这没有输入,因此值默认为 0,结果为 0。

如果要减去两个值,还是要提供,试试

 op = new Subtraction(100, 200);

【讨论】:

  • 我对 Java 很陌生,这是我在 Stackoverflow 上的第一篇文章。对此感到抱歉。我的用例在实例化它们时没有为减法、乘法和除法类提供任何参数。这些值必须来自第一次初始化。这就是我感到困惑的地方。如果我做错了,再次抱歉
  • @arjun 我建议您检查这是否是您作业的真正要求,因为按照您的建议去做没有任何意义。您更有可能以非常不同的方式编写代码。您确定计算不应该采用这些值吗?
  • 是的,根据要求,只有加法构造函数接受值,减法、乘法和除法构造函数都不接受值。甚至计算方法也不接受参数。分配给 Addition 构造函数的值必须来/应用于剩余的类。
  • 你可以这样做,但这是非常糟糕的编程习惯。你可以将你的字段设为private static int a, b,但就像我说的,永远不要在真正的程序中这样做。
  • 非常感谢@Peter Lawrey 不,我明白了。还有一个小问题。如何将计算方法从 Operation 覆盖到其余类。我的代码有问题。它不是覆盖而是仅采用 Operation 的计算方法并为所有方法提供相同的输出 300
猜你喜欢
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 2013-06-16
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多