为什么在java中使用setter而不是构造函数?
setter在java中只提供构造函数的一个函数,即为实例变量赋值。我们为什么需要它们?你能举例说明吗?为什么在java中使用setter而不是构造函数?,java,constructor,getter-setter,setter,Java,Constructor,Getter Setter,Setter,setter在java中只提供构造函数的一个函数,即为实例变量赋值。我们为什么需要它们?你能举例说明吗? 我知道我问的问题是初步的,对此我很抱歉。我是编程新手,当我发现stackoverflow时,我问了这个问题,这个问题困扰了我很长时间。我试图删除,但这是不允许的 因为您可以稍后更改同一实例的值。例如,假设一个人具有以下类别: public class Person { String firstName; String lastName; public Person(String
我知道我问的问题是初步的,对此我很抱歉。我是编程新手,当我发现stackoverflow时,我问了这个问题,这个问题困扰了我很长时间。我试图删除,但这是不允许的 因为您可以稍后更改同一实例的值。例如,假设一个人具有以下类别:
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;
}
}
想象一下,有一个名叫琳达·克罗夫特的女人现在单身
Person linda = new Person("Linda", "Croft");
几年后,他嫁给了一个名叫约翰·威克的男人。然后琳达想在婚后把她的名字改成他丈夫的名字。如果我们没有setter,我们需要创建另一个Linda,显然是另一个人:
Person anotherLinda = new Person("Linda", "Wick");
使用setter,我们可以使用以下内容更新她的姓名:
linda.setLastName("Wick");
现在Linda的名字是Linda Wick。Setters允许您在初始化后改变对象的状态。另一方面,构造函数只能设置一次状态。因为很明显,有时您需要更改已经存在的对象中的值。只允许在构造函数中设置值会使每个对象都不可变。你说的构造函数可能不是指构造函数吗?您的意思是设置非私有字段的值吗?