gpt4 book ai didi

Java - 为什么 ClassName.this.variable 在变量为静态时起作用?

转载 作者:搜寻专家 更新时间:2023-11-01 02:28:24 25 4
gpt4 key购买 nike

<分区>

我试图完全理解“这个”是如何工作的。在我的 previous post我理解了为什么我们使用“this”关键字。

我对静态的理解是该类具有该成员的一个副本。 “this”用于表示当前对象。对于所有对象,静态成员变量都是一样的,那么为什么“this”对静态成员变量起作用呢?

代码:

public class OuterInnerClassExample
{
public static void main(String[] args)
{
OuterClass outClassObj = new OuterClass(10);
outClassObj.setInt(11);
outClassObj.setInt(12);

System.out.println("Total Count: " + outClassObj.getCount() );
}
}

class OuterClass
{
private int test;
private static int count; // total sum of how many new objects are created & the times all of them have been changed

public OuterClass(int test)
{
this.test = test;
// count += 1; // preferred as count is static
this.count += 1; // why does this work
}

public int getInt()
{
return this.test;
}

public int getCount()
{
return this.count;
}

public void setInt(int test)
{
this.test = test;
// count += 1; // preferred as count is static
this.count += 1; // why does this work
}

class SomeClass
{
private OuterClass outClassObj;

public SomeClass(int var)
{
outClassObj = new OuterClass(var);
}

public int getVar()
{
return this.outClassObj.getInt();
}

public int getCount()
{
return this.outClassObj.getCount();
}

public void setVar(int var)
{
// OuterClass.this.test = var; // can do this
outClassObj.setInt(var); // preferred

// OuterClass.count += var; // should do this
OuterClass.this.count += var; // why does this work
}
}
}

另外,在setVar方法中,我们可以使用ClassName.this来操作objects的值,不过我觉得还是用setter比较好,这样更清晰。在这里使用“this”有什么我错过的优势吗?

请发布代码以显示您要解释的内容的示例。

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