Getters and Setters和这个。关键词

时间:2016-12-18 12:37:27

标签: java constructor getter-setter

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

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

this.gender是否可以作为制定者?如果不是,它的功能是什么?

我需要为这些制作一个吸气剂和制定者吗?在代码示例中,我发现他们只有一个吸气剂,但不是一个吸气剂。但我真的不明白为什么。 提前谢谢!

3 个答案:

答案 0 :(得分:2)

  

在代码示例中,我发现他们只有一个getter,但不是一个setter。但我真的不明白为什么。

您描述的功能是在创建Person对象时,任何人都无法set genderlength。 如果用户愿意,他/她可以根据需要创建具有属性的 Personnew Person(...))。但是在创建Person后,您无法set属性。

  

this.gender = gender是否可以作为制定者?我似乎无法弄清楚它的功能是什么。

工作作为一个setter(虽然它本身不是一个setter,因为它不是一个函数)。但只能在构造函数中。正如我上面所说的那样。

请注意,如果gender的{​​{1}}和length字段不是Person,则外部可能private / set set / get方法。

答案 1 :(得分:1)

当您通过调用构造函数方法创建Person对象时,您给出的构造函数示例代码用于设置/初始化Person类的变量。在内部,属性值由此设置。所以,你可以说它的功能就像二传手。在此之后,您只需要获取和获取这些属性所拥有的值。

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

此致

Manoj

答案 2 :(得分:0)

面向对象编程中的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赋值给它的变量,以便看到无效的性别,长度逻辑也相同。