可以设置默认值,然后在构造函数中更改值

Is possible to set a default value and then change the value in a constructor

class Person {
   private String name;
   private String sex="male";
   public Person(String name) {
       this.name = name;
   }
   public String getSex(){return this.sex;}
}

在上面class中,如果我要设置sex的默认值。可以吗? 那么,如果我要创建新的Person,下面的代码好吗?

Person p = new Person("mike");
String sex = p.getSex();

您可以在 Java 中链接构造函数以提供某些默认值。

例如,这里有一个带有名称的构造函数和一个带有名称和性别的构造函数。

public class Person {
    private String name;
    private String sex;

    public Person(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    public Person(String name) {
        this(name, "male");
    }

    // getters/setters here
}

如果您的对象有很多可选属性,您应该考虑 Builder pattern 而不是标准构造函数。

通过将字段定义为 final 并仅通过构造函数分配值来使您的 class 线程安全总是好的。

class Person {
   private final String name;
   private final String sex;
   public Person(String name, String sex) {
       this.name = name;
       this.sex = sex;
   }
   public String getName() { return this.name; }
   public String getSex(){return this.sex;}
}