为什么我们不能在静态方法中使用非静态数据成员?
答案 0 :(得分:4)
非静态成员属于对象。静态方法没有对象。
如果我们有
class MyClass {
int member;
. . .
public static int statFunc() {
. . .
foo = member;
. . .
}
. . .
}
如果我们有两个MyClass
一个member = 1
个实例,另一个member = 2
个实例
我们调用statFunc
然后statFunc不知道要使用member
的哪个值。
答案 1 :(得分:0)
非静态数据类型是指类的实例,这些变量的值可以根据从类创建的每个实例而变化。
例如,请查看以下代码:
public class name {
String name;
}
每个名称对象可以使用不同的名称。
这就是为什么非静态变量只能通过非静态方法访问的原因,否则静态方法永远不会知道哪个实例变量。
我希望这会有所帮助。
答案 2 :(得分:-1)
因为它没有任何意义。实例变量与类的实例相关联。静态方法不是。你会在静态方法中讨论哪个实例的变量?