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
访问实例成员意味着访问实例的字段或属性,而不是实例本身,因为它无法编译。点实际上并不意味着以您认为的确切方式进行“访问”,我想这就是您感到困惑的根源。点用于调用特定对象上的方法(请参阅此链接)或访问对象的字段(如果该字段是静态的,则访问类)。
例如,假设类定义如下:
class MyClass {
private int x;
static void foo() {
... // foo cannot access member x
}
}
Run Code Online (Sandbox Code Playgroud)
因此,在方法foo,你不能引用x,因为它是一个成员字段MyClass绑定到一个实例的MyClass。
另请参阅了解类成员以了解静态成员和实例成员之间的区别。
| 归档时间: |
|
| 查看次数: |
24628 次 |
| 最近记录: |