静态方法无法访问类的实例成员

Dig*_*nce 7 java static-methods class

在Liang的第9版Java编程简介中,它指出:“静态方法无法访问类的实例成员”(第312页)。我知道为什么类的实例成员需要访问方法(可能是静态的),但是为什么方法需要访问实例成员?对我来说,“访问”是指“通过点运算符进行访问”。换一种说法:

 Class myClass = new Class();
 myClass.someStaticMethod();
Run Code Online (Sandbox Code Playgroud)

很有道理,而:

 someNonStaticMethod.myClass
Run Code Online (Sandbox Code Playgroud)

要么

 someStaticMethod.myClass
Run Code Online (Sandbox Code Playgroud)

才不是。是否允许someNonStaticMethod.myClass语法?我不相信我曾经见过这种格式。如果不允许,为什么还要提到静态方法不能访问类的实例成员?

请帮助解除我的困惑。

-DI

man*_*uti 5

访问实例成员意味着访问实例的字段或属性,而不是实例本身,因为它无法编译。点实际上并不意味着以您认为的确切方式进行“访问”,我想这就是您感到困惑的根源。点用于调用特定对象上的方法(请参阅此链接)或访问对象的字段(如果该字段是静态的,则访问类)。

例如,假设类定义如下:

class MyClass {

   private int x;

   static void foo() {
      ... // foo cannot access member x
   }
}
Run Code Online (Sandbox Code Playgroud)

因此,在方法foo,你不能引用x,因为它是一个成员字段MyClass绑定到一个实例MyClass

另请参阅了解类成员以了解静态成员和实例成员之间的区别。