为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

炎炎设计 2019-08-28 09:12:31
为什么我们不能在静态方法中使用'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;
    }}


查看完整回答
反对 回复 2019-08-28
?
RISEBY

TA贡献1856条经验 获得超5个赞

我们不能在静态方法上下文中使用“this”的主要原因: -

这个: - “this”表示当前的类OBJECT,所以很明显,只要我们打算创建该类的Object,“this”才会出现在图片中。

静态方法: - 不需要创建对象以使用静态方法。根据Java规则,“实例”或对象创建对“静态”没有任何意义。

所以如果我们同时使用它们(静态和这个)会有矛盾。这就是我们不能在静态方法中使用“this”的原因。


查看完整回答
反对 回复 2019-08-28
  • 3 回答
  • 0 关注
  • 1128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信