【问题标题】:Passing object as parameter in method [duplicate]在方法中将对象作为参数传递[重复]
【发布时间】:2015-03-04 07:32:58
【问题描述】:

我正在尝试运行一个方法,它将两个对象的值相加。我得到“无法对非静态方法进行静态引用”。这是我的代码...

public class Main {
    public static void main(String[] args) {

        Circle obj1 = new Circle(10);
        CircleTwo obj2 = new CircleTwo(20);

        System.out.println(calculateRadiusSum(obj1, obj2));
    }

    public int calculateRadiusSum(Circle r1, CircleTwo r2) {
        int R = r1.radius + r2.radius;
        return R;
    }

}

public class Circle {
    int radius;

    public Circle(int r) {
        r = radius;
    }
}

public class CircleTwo {
    int radius;

    public CircleTwo(int r) {
        r = radius;
    }

}

【问题讨论】:

  • calculateRadiusSum 是一个实例方法。您希望它针对哪个实例运行? (仔细阅读错误信息,并确保您了解实例方法和静态方法之间的区别。)
  • 我完全同意。这些天,您收到的错误消息非常全面。为什么人们会忽略它们?

标签: java oop methods


【解决方案1】:

calculateRadiusSum 也必须是 static,因为它不是从 Main 的实例调用的:

将原型改为

public static int calculateRadiusSum

【讨论】:

  • 当我将方法设为静态时,结果为 0
  • 那是一个单独的问题。在您的 Circle 课程中(顺便说一句:只上一堂课并制作两个班级实例),您有 r=radius 而不是 radius=r
  • 感谢您.. 现在可以使用了。
猜你喜欢
  • 1970-01-01
  • 2011-04-30
  • 2020-06-05
  • 2013-09-13
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
  • 2014-04-22
  • 2017-08-22
相关资源
最近更新 更多