(Java) 为什么我应该将 show() 更改为 static 来修复错误? [重复]

问题描述 投票:0回答:1
public class Footest {

    public static void main(String[] args) {
        show();

    }

    public void show() {
        System.out.println("show");
    }
}

第 4 行有一个错误(show();),为了修复它,Eclipse 告诉我将 show() 方法更改为静态,并显示一条消息“无法对非静态方法 show() 进行静态引用”来自 Footest 类型。”。但我无法完全理解为什么该方法应该是静态的。我的意思是,它会带来什么变化?我真的需要有人帮助我轻松地解决它。

我知道答案是将 show() 方法更改为静态方法。但我真正想知道的是“为什么”有效!!

java debugging static non-static
1个回答
0
投票

当处于静态上下文中时(例如,在像 main 这样的静态方法内),如果没有类的实例来限定访问,则不能访问该类中的任何实例方法。所以你也可以像下面这样访问它:

Footest ft = new Footest();
ft.show();

现在的问题可能是为什么不使用实例限定符?

因为静态方法是类方法,可以共享和使用,不需要类的实例。

因此,一旦进入静态上下文(即静态方法),就无法知道应该调用该类的许多可能实例中的哪个方法。这也适用于从静态上下文访问实例字段。

© www.soinside.com 2019 - 2024. All rights reserved.