gpt4 book ai didi

java - Java中 'this'的真正含义是什么?

转载 作者:行者123 更新时间:2023-12-01 07:10:22 26 4
gpt4 key购买 nike

我看了一个Why can't I use the keyword "this" when referring to fields in static methods?

并认为通过引用变量访问静态成员是可以的,但是使用this访问此类成员是不行的。请看下面的代码。

static int month; 

public static void setMonth(int x)
{
Date date = new Date();
date.month = x; //fine, why ?
this.month = x; //compiler error, why ?
}

它清楚地表明 this与引用变量不同。如果真是这样,那么到底是什么?我需要了解 this 的真正含义了解为什么不能从静态上下文访问它。

请不要给我随机博客或 Oracle 教程的链接,这些博客或教程说 this不能在静态上下文中使用 - 我已经知道这一点。我想超越这一点并理解为什么它不能使用。

链接问题中的代码 -

public class Date
{

static int month;

public static void setMonth(int x)
{
this.month = x; //compiler error
}

public static int getMonth()
{
return month; //compiles just fine, no error
}

}

最佳答案

当您调用非静态方法时,例如myObject.myMethod() 时,编译器会添加一个名为“myObject”的额外 secret 参数,该参数在方法内部可作为“this”使用。

当你调用静态方法时,例如MyClass.myStaticMethod(),没有对象可以为其分配 secret 参数的值,因此没有额外的 secret 参数,因此 'this' 在静态方法内不能有值。

关于java - Java中 'this'的真正含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15593827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com