【问题标题】:How to create get and set methods for parameters in a class? [duplicate]如何为类中的参数创建获取和设置方法? [复制]
【发布时间】:2016-02-07 17:32:39
【问题描述】:

我创建了一个类。

public class mailCustomer {
    public static void main(String[] args) {
        String Name;
        int Id;
        String Address;
        Boolean IsPack;
    }
}

我需要为我的参数 Name、Id、Address、IsPack 创建 get 和 set 方法。 我该怎么做,我在哪里写它们?在“主要”方法之后?在“主要”方法中?

【问题讨论】:

  • 我会更加熟悉这种语言。但是你将如何做到这一点是你需要在我们称之为globally 的主变量之外声明这些变量,然后只是为了它把private 放在它们前面。然后为它们创建方法
  • 这在大量教程中被广泛覆盖,甚至在official Java tutorials

标签: java get set


【解决方案1】:

如前所述,您似乎对面向对象编程并不熟悉。它不在乎。我只想说,您可以节省大量时间并提高类的可读性,使用 lombok 使用注释自动生成您的 getter 和 setter。你可以在这里找到一个例子:LOMBOK

【讨论】:

    【解决方案2】:

    首先,从那里删除 main 方法。您正在创建一个名为 mailCustomer 的类,它将为您创建 object 类型的 mailCustomer。

    为此,您需要三样东西:属性(那里有)、构造函数和 get/set 方法。我将向您展示一个示例,您可以从那里进行指导。我的班级将是“兔子”,它将有:

    属性

    -串眼睛:眼睛颜色。

    -字符串竞赛:它来自哪里。

    构造函数

    它将有一个构造函数,将使用两个参数。

    方法

    每个属性都有两个 getter 和两个 setter。

    这是我的这个类的代码:

    public class Rabbit{
    
       //Attributes
    
       private String eyes;
       private String race;
    
       //Constructor
    
       public Rabbit(String colour, String where){
    
       this.eyes = colour;
       this.race = where;
       }
    
       //Methods get/set
    
       public String getEyes(){
    
       return this.eyes;
       }
    
       public String getRace(){
    
       return this.race;
       }
    
       public void setEyes(String colour){
    
       this.eyes = colour;
       }
    
       public void setRace(String where){
    
       this.race = where;
       }
    
    }
    

    如您所见,您将使用 get 方法从类中返回特定属性;如果您想从创建的对象(在我的情况下,从创建的“兔子”)更改其中一个属性,将使用和 set 方法。

    稍后,如果你想使用这个类,你将创建你的 Main 类,到创建 'Rabbit' 类的同一个包中。

    package rabbit;
    
    public static void main(String[] args){
    
    Rabbit George = new Rabbit("brown","spanish");
    
    }
    

    现在尝试对您的班级执行此操作。希望对你有帮助!

    【讨论】:

      【解决方案3】:

      首先,您需要在类级别声明变量,以便可以在类中的任何位置使用它们。然后,您只需为每个变量创建一个 set 和 get 方法,就像这样

      public class MailCustomer {
          String name;
          int id;
          String address;
          boolean isPack;
      
          public static void main(String[] args) {
      
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          public void setId(int id) {
              this.id = id;
          }
      
          public void setAddress(String address) {
              this.address = address;
          }
      
          public void setIsPack(boolean isPack) {
              this.isPack = ispack;
          }
      
          public String getName() {
              return name;
          }
      
          public int getId() {
              return id;
          }
      
          public String getAddress() {
              return address;
          }
      
          public boolean getIsPack() {
              return isPack;
          }
      }
      

      您的命名约定似乎也有些混乱。在java中,类名是大写的,而变量和方法名是驼峰式的

      【讨论】:

      • “class level”的措辞比 global 更好。
      • 感谢您的澄清。我编辑了我的答案以反映“班级水平”
      【解决方案4】:
      public static void main(String[] args) {
      
          String Name;
          int Id;
          String Address;
          Boolean IsPack;
      
      }
      

      您不能为它们创建 getter 和 setter,因为它们不是在您的类中创建的,而是在您的 main 方法中本地创建的。你想要的是:

      public class MyClass{
      
      String Name;
          int Id;
          String Address;
          Boolean IsPack;
      
      // getter for Name
      public String getName(){
        return this.Name;
      }
      // setter for Name
      public void setName(String name){
        this.Name = name;
      }
      
      public static void main(String[] args) {
      
      }
      }
      

      对于这些,您将能够创建 getter 和 setter。 不过,最好将它们声明为私有。 另外:遵循命名约定可以帮助其他人更轻松地阅读您的代码。 Name(大写N)更适合作为类名,而name(小写n)是变量名。

      【讨论】:

      • 如果我可以问,为什么要投反对票?
      • 我没有投反对票,但我只是说您可能想展示一个 setter/getter 方法的示例以及他将如何做到这一点。否则向我 +1
      • 好点子,我已经用名称的 getter 和 setter 更新了它(以及遵循命名约定的建议)
      猜你喜欢
      • 2013-02-03
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      • 2016-03-20
      相关资源
      最近更新 更多