java中的实例方法是否需要访问实例变量?

Is it necessary for instance methods to access instance variable in java?

public class Main {

    void sum(int a, int b) {
        int c = a + b;
        System.out.println(c);
    }

    public static void main(String args[]) {
        Main ob = new Main();
        ob.sum(10, 125);
    }
}

在上面的代码中没有实例变量,但我读到如果一个方法是实例方法它应该访问实例变量。那么'sum'是实例方法吗?

sum在这里是一个实例方法,因为它不是static并且需要一个对象的实例。您在此处创建实例:

Main ob = new Main();

在这种特殊情况下 sum 确实可以 static,通过不需要实例来稍微简化代码。

I have read that if a method is an instance method it should access instance variable

怀疑 你正在阅读的内容暗示如果一个方法根本不与实例交互那么它可能应该是 static。文中某处可能会提到术语 "pure function"

我不会说 所有 潜在 static 方法 无处不在 static作为通用规则。这实际上归结为对象本身的语义。由于您在此处拥有的对象具有 非常少的 语义上下文,因此这个小示例可以很容易地采用任何一种方式。

但是假设您将对象扩展为还包括 subtractmultiplydivide 等的方法。随着对象的扩展,假设这些附加方法中的一个或多个确实使用实例变量。如果一个对象具有多个语义相似的方法,其中一些是 static 而另一些不是。

,那将是一种不和谐的体验。

与其专注于某人给你的任何特定规则,不如专注于你打算构建的对象。如果你认为它 应该 static,就这样吧。如果你觉得不应该,那就不要。如果您不确定,那么作为练习同时执行这两种方法,看看在特定情况下您更喜欢哪种。

展望您打算构建的未来计划很重要,因为在整个应用程序中依赖对象的代码越多,从 static 更改为实例或反之亦然。

是的,'sum'是实例方法,因为任何非静态方法都是实例方法。 此外,实例方法不必访问实例变量。 正确的说法是“如果方法是实例方法,它可以访问实例变量。