Pra*_*ani 33 java oop static this
class Sub {
static int y;
public static void foo() {
this.y = 10;
}
}
Run Code Online (Sandbox Code Playgroud)
我理解,它this代表调用该方法的对象,并且静态方法不绑定到任何对象.但在上述情况下,变量y也是静态的.
如果我们可以在类对象上调用静态方法,为什么我们不能允许静态方法来设置类的静态变量.
这个附加约束的目的是什么?
bri*_*ium 80
因为this是指对象实例.在静态方法的调用中没有对象实例.但是当然你可以访问静态字段(只有静态字段!).只是用
class Sub {
static int y;
public static void foo() {
y = 10;
}
}
Run Code Online (Sandbox Code Playgroud)
如果要确保获取静态字段y而不是某个具有相同名称的局部变量,请使用类名指定:
class Sub {
static int y;
public static void foo(int y) {
Sub.y = y;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
我们不能在静态方法上下文中使用"this"的主要原因: -
这个: - "this"表示当前的类OBJECT,所以很明显,只要我们打算创建该类的Object,"this"才会出现在图片中.
静态方法: - 不需要创建对象以使用静态方法.根据Java规则,"实例"或对象创建对"静态"没有任何意义.
所以如果我们同时使用它们(静态和这个)会有矛盾.这就是我们不能在静态方法中使用"this"的原因.
| 归档时间: |
|
| 查看次数: |
61409 次 |
| 最近记录: |