gpt4 book ai didi

java - 类中的实例变量或在 Java 的构造函数中将它们用作参数有什么区别?

转载 作者:行者123 更新时间:2023-12-01 11:44:25 27 4
gpt4 key购买 nike

在类或构造函数中使用studentName 和studentAverage 有什么不同?

public class StackOverFlowQ {

String studentName;
int studentAverage;


public void StackOverFlowQ (String stedentName, int studentAverage){

}
}

最佳答案

它的名字是shadowing ,并且有一个适用于这种情况的具体案例。

A declaration d of a field or formal parameter named n shadows, throughout the scope of d, the declarations of any other variables named n that are in scope at the point where d occurs.

为您提炼一下:

您已将字段 studentNamestudentAverage 声明为构造函数中的形式参数。 在该构造函数的范围内,对上述两个名称的任何引用都将被视为使用参数,而不是其他更高级别的字段。

如果您需要引用该字段,请使用 this 关键字,就像取消引用该字段一样。

this.studentName = studentName;
this.studentAverage = studentAverage;

不仅在变量阴影方面,在访问方面也存在巨大的差异。在您的构造函数中,您只能在其范围内使用变量 studentNamestudentAverage 。实例化此类的人无法访问这些参数中的值,除非它们被捕获到字段中。

因此,具有类似名称的字段开始发挥作用。这些字段实际上可以被其他类使用,具体取决于它们的可见性或通过其他方法的暴露。

关于java - 类中的实例变量或在 Java 的构造函数中将它们用作参数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29265873/

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