Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将getter与此一起使用。在爪哇_Java_Oop_Getter - Fatal编程技术网

Java 将getter与此一起使用。在爪哇

Java 将getter与此一起使用。在爪哇,java,oop,getter,Java,Oop,Getter,我正在为CS做一个项目,我刚刚意识到我不理解这背后的机制。java引用和getter。具体而言,如果我具备以下条件: class Circle{ private int radius; } public Circle(int radius){ this.radius = radius; } public int getRadius(){ return radius; } 为什么对于构造函数,我使用this.radius来引用Circle类中的数据字段“radius”,而

我正在为CS做一个项目,我刚刚意识到我不理解这背后的机制。java引用和getter。具体而言,如果我具备以下条件:

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
    的数据字段

  • 我刚刚在Sublime上测试了它,它输出了相同的结果。
    仅根据我自己的逻辑,使用
    this.radius
    返回
    getRadius()
    getter中的半径而不是
    return radius
    是否更有意义,因为我指的是对象
    圆中的数据字段


我真的很感激能得到的所有帮助

这是因为
radius
是构造函数参数和类字段的名称。为了消除那些
的歧义,使用了这个
关键字。如果使用getter
,则不需要此
,但也不会造成伤害。某些格式化程序默认情况下会添加此
,它相当于:

public int getRadius(){
    return this.radius;
}

如果不隐藏本地名称,则在构造函数中不需要
。这就是我的想法

public Circle(int r){
    this.radius = r;
}
你可以写

public Circle(int r){
    radius = r;
}

this
仅在用于指定所指的
radius
时才是必需的

实际上,当您参考
this.radius
时,这意味着您使用了类字段变量。否则(在您的代码中),您可以将
半径
重新指定为给定构造函数中的参数,这在您的情况下可能是不需要的。要区分它,您必须使用不同的变量名称,或者使用

,因为构造函数
公共圆(int radius){…}
具有与全局参数名称相同的参数名称
radius
,并且您正在将全局参数(
radius
)分配给局部参数(
radius
)因为名字有点含糊不清。为了简化,我们引用了全局参数。像这样。半径=半径