Java:如何在同一个类的另一个方法中调用类的方法?

时间:2013-11-25 06:20:28

标签: java

我正在制作一个基本代码如下的程序:

  

public class StatisticalList extends ArrayList {

    public double getMinimumValue() {...}

    public double getMaximumValue() {...}

    public double range(){

          double range = StatisticalList.getMaximumValue() - StatisticalList.getMinimumValue();

          return range;
}

在这里我实现了两个方法,getMinimumValue和getMaximumValue。接下来我想实现一个getRange方法。似乎很容易不再进行计算,只需调用get__Value()方法。

但是这给出了一个错误。方法maxValue()未定义类型ArrayList。我想做这种类型的计算,我需要在程序中的其他方法中多次使用方法。我如何让它工作?

4 个答案:

答案 0 :(得分:3)

您正在调用getMaximumValue()和getMinimumValue()作为UnifiedList上的静态方法调用。

double range = getMaximumValue() - getMinimumValue()

应该能得到你想要的东西。

答案 1 :(得分:1)

在类中定义的方法可以在此类的任何位置访问。此外,由于您使用了“public”访问修饰符,因此可以从包中的任何其他类访问您的方法。但是,要在不同包中的类中访问它们,您需要导入该类。请参阅文档here以及有关访问修饰符here的更多信息。

您还可以简化range()方法:

public double range() {
    return (getMaximumValue() - getMinimumValue());
}

答案 2 :(得分:1)

简而言之:

double range = getMaximumValue() - getMinimumValue();

但让我们解释一下。 首先,我不确定这段代码是如何编译给你的。 以“classname.methodname”的形式调用方法是针对静态方法的,所以当你调用StatisticalList.getMaximumValue()时,java编译器希望在那里看到一个静态方法。
我想你也想要它。您希望getMaximumValueArrayList中找到值中的最大值。所以你应该在“this”对象上调用这个方法。只需从此行中删除2 x StatisticalList.,然后按如下所示进行操作:

double range = getMaximumValue() - getMinimumValue();

此外,您还应该小心如何实现get__Value()方法。 您的收藏集延伸ArrayList,因此它基本上是ArrayList<Object> 它可以容纳各种类型的对象。不仅是数字。 将类定义更改为

public class StatisticalList extends ArrayList<Double> {

可能会更有意义。

尝试一下..

答案 3 :(得分:0)

语法StatisticalList.getMaximumValue()基本上用于调用静态方法。

您尝试调用的方法是instance方法。

所以,如果你想在同一个班级中调用它们

   double range = getMaximumValue() - getMinimumValue();

如果您想在其他地方使用reference StatisticalList

StatisticalList  s = new StatisticalList();
double range = s.getMaximumValue() - s.getMinimumValue();