Getters 和 Setters 以及这个。关键词

Getters and Setters and this. keyword

我是编码新手,我对 Java 中的 getter 和 setter 感到困惑。 我知道 getters 和 setters 用于封装。但是如果你有一个构造函数来创建一个特定性别和长度的人。这两个特征都应该有一个 setter 和一个 getter 吗?

public Person(Gender gender, Length length) {
this.gender = gender;
this.length = length;
}

this.gender 是否充当 setter?如果不是,它的作用是什么?

我需要为这些制作 getter 和 setter 吗?在代码示例中,我发现它们只有 getter,但没有 setter。但我真的不明白为什么。 提前致谢!

In code examples I've found they only have a getter, but not a setter. But I don't really understand why.

您描述的功能是当创建 Person 对象时,没有人可以 set 它的 genderlength。 如果用户愿意,he/she 可以根据需要创建具有属性的 new Person (new Person(...))。但是创建Person后,你不能set属性。

But does the this.gender = gender work as a setter or not? I can't seem to find out what its function is.

它作为 setter 工作 (尽管它本身不是 setter,因为它不是函数)。但仅在构造函数内。正如我上面所说。

请注意,如果 Persongenderlength 字段不是 private,那么它们可能是 set/get 在 set/get 方法之外。

Getter 和 setter 面向对象编程中的方法用于控制客户端不要以意外行为更改您的变量。

public Class Person{
  private int gender;
  private int length;

  public Person(int gender,int length){
    this.gender = gender;
    this.length = length;
  }

  public int getGender(){
     return this.gender;
  }
  public void setGender(int setGender){
     if(setGender==1 || setGender == 0){
       this.gender = setGender;
     }else{
       this.gender = -1;
     }
  }
  public int getLength(){
     return this.length;
  }
  public void setLength(int setLength){
     if(setLength>100){
       this.length = setLength;
     }else{
       this.length = -1;
     }
  }
}

就像在这个代码示例中一样,如果您对变量有一些限制并且您需要指示客户端以您的方式更新这些变量,您应该按顺序使用 getter 和 setter 方法控制你的变量更新方式。

在此示例中,如果客户端的性别不是 0 或 1(如果输入了无效的性别代码),我们将 -1 分配给其变量以查看无效的性别,长度逻辑也是相同的。

您提供的构造器示例代码用于set/initialize Person class 的变量,当您通过调用构造器方法创建Person 对象时。在内部,属性值由此设置。因此,您可以说它的功能类似于 setter。在此之后,您只需要 getter 来获取和使用这些属性所持有的值。

但是,您也可以为每个属性编写特定的 setter 方法,以便在同一个 Person 对象上显式地为每个属性单独设置值。

此致

Manoj