【问题标题】:Why use setters in java instead of constructors? [duplicate]为什么在 java 中使用 setter 而不是构造函数? [复制]
【发布时间】:2018-05-17 17:41:52
【问题描述】:

Setter 仅服务于 java 中构造函数的单一功能,即为实例变量赋值。为什么我们需要它们?你能举个例子解释一下吗? 我知道我问的问题很粗略,对此我深表歉意。我是编程新手,一发现 stackoverflow,我就问了这个问题,这个问题困扰了我很长时间。我尝试删除,但这是不允许的。

【问题讨论】:

  • Setter 允许您在初始化后改变对象的状态。另一方面,构造函数只能设置一次状态。
  • 因为显然您有时想要更改已经存在的对象中的值。只允许在构造函数中设置值会使每个对象都不可变。
  • 有没有可能你说的构造函数不是指构造函数?您的意思是设置非私有字段的值吗?

标签: java constructor getter-setter setter


【解决方案1】:

因为您可以稍后更改同一实例的值。例如,假设一个人具有以下类:

public class Person {
  String firstName;
  String lastName;

  public Person(String firstName, String lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
  }

  public void setLastName(String lastName) {
    this.lastName = lastName;
  }
}

想象一下,有一个名叫 “Linda Croft” 的女人现在单身。

Person linda = new Person("Linda", "Croft");

几年后,他嫁给了一个名叫“John Wick”的男人。于是“琳达”想在婚后改名丈夫的名字。如果我们没有 setter,我们需要创建另一个“Linda”,这显然是另一个人:

Person anotherLinda = new Person("Linda", "Wick");

使用 setter,我们可以更新她的名字:

linda.setLastName("Wick");

现在琳达的名字是“琳达威克”

【讨论】:

    猜你喜欢
    • 2013-10-23
    • 1970-01-01
    • 2015-06-10
    • 2012-06-28
    • 1970-01-01
    • 2021-06-29
    • 2013-04-25
    相关资源
    最近更新 更多