猿问

为什么我们不能在静态方法中使用'this'关键字

为什么我们不能在静态方法中使用'this'关键字

class Sub {
    static int y;
    public static void foo() {
         this.y = 10;
    }}

我理解,它this代表调用该方法的对象,并且静态方法不绑定到任何对象。但在上述情况下,变量y也是静态的。

如果我们可以在类对象上调用静态方法,为什么我们不能允许静态方法来设置类的静态变量。

这个附加约束的目的是什么?


炎炎设计
浏览 1129回答 3
3回答

holdtom

因为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

我们不能在静态方法上下文中使用“this”的主要原因: -这个: - “this”表示当前的类OBJECT,所以很明显,只要我们打算创建该类的Object,“this”才会出现在图片中。静态方法: - 不需要创建对象以使用静态方法。根据Java规则,“实例”或对象创建对“静态”没有任何意义。所以如果我们同时使用它们(静态和这个)会有矛盾。这就是我们不能在静态方法中使用“this”的原因。
随时随地看视频慕课网APP

相关分类

Java
我要回答