为什么我们不能在静态方法中使用'this'关键字class Sub {
static int y;
public static void foo() {
this.y = 10;
}}我理解,它this代表调用该方法的对象,并且静态方法不绑定到任何对象。但在上述情况下,变量y也是静态的。如果我们可以在类对象上调用静态方法,为什么我们不能允许静态方法来设置类的静态变量。这个附加约束的目的是什么?
3 回答
holdtom
TA贡献1805条经验 获得超10个赞
因为this
是指对象实例。在静态方法的调用中没有对象实例。但是当然你可以访问静态字段(只有静态字段!)。只是用
class Sub { static int y; public static void foo() { y = 10; }}
如果要确保获取静态字段y
而不是某个具有相同名称的局部变量,请使用类名指定:
class Sub { static int y; public static void foo(int y) { Sub.y = y; }}
RISEBY
TA贡献1856条经验 获得超5个赞
我们不能在静态方法上下文中使用“this”的主要原因: -
这个: - “this”表示当前的类OBJECT,所以很明显,只要我们打算创建该类的Object,“this”才会出现在图片中。
静态方法: - 不需要创建对象以使用静态方法。根据Java规则,“实例”或对象创建对“静态”没有任何意义。
所以如果我们同时使用它们(静态和这个)会有矛盾。这就是我们不能在静态方法中使用“this”的原因。
添加回答
举报
0/150
提交
取消