我正在为CS做一个项目,我才意识到我不理解这背后的机制。 java引用和getters。具体来说,如果我有以下内容:
class Circle{
private int radius;
}
public Circle(int radius){
this.radius = radius;
}
public int getRadius(){
return radius;
}
this.radius
引用Circle类中的数据字段“radius”,但对于构造函数,我有this.radius = radius
?radius
的数据字段?this.radius
返回getRadius()
getter中的半径而不仅仅是return radius
更有意义,因为我指的是对象Circle
中的数据字段?我非常感谢能得到的所有帮助!
这是因为radius
是构造函数的参数和类的字段的名称。为了消除歧义,使用了this
关键字。如果不需要吸气剂this
,也不会受伤。有些格式化程序默认添加this
,它相当于:
public int getRadius(){
return this.radius;
}
如果不隐藏本地名称,则在构造函数中不需要this
。就是这样
public Circle(int r){
this.radius = r;
}
你可以写
public Circle(int r){
radius = r;
}
this
仅在用于指定您指的是哪个radius
时才需要。
实际上当你引用this.radius
时意味着你使用了一个类字段变量。否则(在你的代码中)你可以重新分配你的radius
作为给定构造函数中的参数,在你的情况下可能是不需要的。要区分它,您必须使用变量的不同名称或使用this
。