如何在同一个类中调用两个方法?

问题描述 投票:0回答:5

如何在一个对象上调用同一类的两个方法?我的意思是我尝试编写一个类及其方法来运行上面的代码:

volume = Calculate.do_calc().get_volume(a);

我正在创建计算类及其两个方法。 do_calc() 和 get_volume(a)。我应该如何编写这个类来运行该代码。

java function inheritance methods overloading
5个回答
0
投票

除非 do_calc() 返回函数 get_volume() 所在的类,否则永远不应该这样做。


0
投票

这是给您的一个小样本。

public class ChainTest {

        public static void main(String[] args) {
                System.out.println(new ChainTest().do_calc().get_volume(1));
        }

        public ChainTest do_calc() {
                // do something;
                return ChainTest.this;
        }

        public int get_volume(int a) {
                return a;
        }
}

0
投票

您不需要将代码写在一行中。您可以在不同的行中调用相同的对象方法。

Calculator calculator = new Calculator();
calculator.do_calc();
calculator.get_volume(a);

以防万一,如果你想要静态方法

Calculator.do_calc();
Calculator.get_volume(a);

0
投票

情况 1 如果 do_calc 是静态的

public class Calculator {

    public static void main(String[] args) {
        System.out.println(Calculator.do_calc().get_volume(1));
    }

    public static Calculator do_calc() {

        Calculator calculator = new Calculator();
        // do something;

        return calculator;
    }

    public float get_volume(int a) {
        return a;
    }
}

情况2:如果do_calc不是静态的

public class Calculator {

    public static void main(String[] args) {
        System.out.println(new Calculator().do_calc().get_volume(1));
    }

    public Calculator  do_calc() {

        Calculator calculator = new Calculator();
        // do something;

        return calculator;
    }

    public float get_volume(int a) {
        return a;
    }
}

情况3:如果两者都有返回类型float,如您在评论中提到的

public class Calculator {

    public static void main(String[] args) {

        Calculator calculator = new Calculator();
        calculator.do_calc();
        System.out.println(calculator.get_volume(1));
    }

    public float do_calc() {

        // do something;

        return 1f; // return your result
    }

    public float get_volume(int a) {
        // do something;
        return a;
    }
}

0
投票

如果类的每个方法不是

return this;
,则必须在其末尾添加
static
。如果方法是
static
,请这样做:

public class Calculation {
     public static Calculation do_calc () {
           //do your calculation
          return null;
      }

     public static Calculation get_volume(int x) {
           //do your calculation
          return null;
      }
}

然后你可以写:

Calculation.do_calc().get_volume(1);

返回

null
没有问题,因为这些方法是静态的,与类的特定实例无关。如果不喜欢那就
return new Calculation();

[编辑]

如果您需要将其结果传递给第二个方法,第一个方法应该返回一个真实的对象:

public class Calculation {

     int result;

     public static Calculation do_calc () {
           //do your calculation
           Calculation c=new Calculation();
           c.result = theResultOfTheCalculation;
          return c;
      }

     public void get_volume(int x) {
           //do your calculation for example:
           System.out.println(result + x);
      }
}
© www.soinside.com 2019 - 2024. All rights reserved.