【问题标题】:Combining get method with variables inside a secondary get/set method Java将 get 方法与辅助 get/set 方法 Java 中的变量相结合
【发布时间】:2018-02-26 02:31:22
【问题描述】:

如果有人可以提供帮助,我将不胜感激。这似乎是一个新手问题,但我无法弄清楚。

我有 3 个类 Class1、Class2、UseClass。

在 Class1 中,我有一个 get/set 方法(COST 在 Class1 的其他地方使用,但不在这些方法中)

int class1Num;
final double COST = 120;

public int getNum()
{
    return class1Num;
}
public void setNum(int newNum)
{
    class1Num = newNum;
}

在 Class2 中,我有一个最终变量和一个普通变量以及另一个 get/set 方法。

Class2 扩展了 Class1。

final double FINALNUM = 50;
double totalNum;

public double getTotalNum()
{
    return totalNum;
}
public void setTotalNum(int class1Num)
{
    totalNum = COST * getNum() + FINALNUM;
}

public void display()
{
    System.out.println("Final Number: " + getTotalNum() );
}

基本上我需要做的是我需要在 Class2 中。首先将 COST 乘以 Class1 中的 getNum() 方法,然后将 FINALNUM 添加到该总数中。这只是我最近的尝试,但我尝试在 system.out 中添加 FINALNUM 无济于事(尽管由于某种原因乘法工作正常)。

在UseClass中调用display()输出最终结果。

我没有其他想法,也不确定我在网上搜索时要寻找什么,所以我想在这里问可能会有所帮助

任何帮助都会很棒

谢谢。

【问题讨论】:

  • Class2.setTotalNum() 是问题所在。您引入了一个需要在调用Class2.setTotalNum() 之前调用Class1.setNum() 的合约,并且您的代码违反了此合约。顺便说一句,如果您显示堆栈跟踪会更容易。

标签: java set getmethod


【解决方案1】:

根据你的说法,我猜这些类如下:

public class Class1 {
    int class1Num;
    final double COST = 120;

    public int getNum()
    {
         return class1Num;
    }

    public void setNum(int newNum)
    {
         class1Num = newNum;
    }
}

public class Class2 extends Class1{
    final double FINALNUM = 50;
    double totalNum;

    public double getTotalNum()
    {
        return totalNum;
    }

    public void setTotalNum(int class1Num)
    {
        // Note: need assign field member "class1Num" inherited from Class1.
        // Otherwise, it will be zero and cause incorrect value of getNum()
        totalNum = COST * getNum() + FINALNUM;
    }

    public void display()
    {
        System.out.println("Final Number: " + getTotalNum() );
    }
}

问题是“setTotalNum(int class1Num)”没有分配继承自 Class1 的 class1Num。您可以在“totalNum = COST * getNum() + FINALNUM;”之前调用“setNum(class1Num);

public class Class2 {
    ...
    public void setTotalNum(int class1Num) {
        setNum(class1Num);
        totalNum = COST * getNum() + FINALNUM;
    }
    ....
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多