使用getter。在java中

问题描述 投票:0回答:3

我正在为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的数据字段?
  • 我刚刚在Sublime上测试它,它输出相同的结果。 根据我自己的逻辑,使用this.radius返回getRadius() getter中的半径而不仅仅是return radius更有意义,因为我指的是对象Circle中的数据字段?

我非常感谢能得到的所有帮助!

java oop getter
3个回答
4
投票

这是因为radius是构造函数的参数和类的字段的名称。为了消除歧义,使用了this关键字。如果不需要吸气剂this,也不会受伤。有些格式化程序默认添加this,它相当于:

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

2
投票

如果不隐藏本地名称,则在构造函数中不需要this。就是这样

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

你可以写

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

this仅在用于指定您指的是哪个radius时才需要。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.