代码之家  ›  专栏  ›  技术社区  ›  DCZ rankthefirst

getter和setter等等。关键词

  •  -1
  • DCZ rankthefirst  · 技术社区  · 8 年前

    我刚开始编程,对Java中的getter和setter感到困惑。 我知道getter和setter用于封装。但是如果你有一个构造函数,它创建了一个特定性别和长度的人。这两个特性是否都应该具有setter和getter?

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

    做这个。性别是二传吗?如果没有,它的功能是什么?

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

    3 回复  |  直到 8 年前
        1
  •  2
  •   Idos    8 年前

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

    Person 对象被创建,没有人可以 set gender length . 如果用户愿意,他/她可以创建 ( new Person(...) )具有他们希望的属性。但是 被创建,您不能 设置 属性。

    但是 this.gender = gender 做不做二传?我似乎不知道它的功能是什么。

    确实 工作 作为一个setter(虽然它本身不是setter,因为它不是一个函数)。但仅在构造器内。如上所述。

    注意,如果 性别 a的字段 不是 private 那么它们可能是 设置 / get 在set/get方法之外。

        2
  •  1
  •   Manoj Kumar    8 年前

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

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

    当做

    Manoj

        3
  •  0
  •   ffguven    8 年前

    面向对象编程中的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;
         }
      }
    }
    

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