[英]Change value of a static variable in a single instance (Java)
我才刚刚开始学习Java。 说,如果您创建以下类:
class FamilyMember {
static String lastName = "Doe";
String name;
int age;
}
现在,您为女儿创建一个实例,并将其名字设置为Ann,等等。如果她结婚或决定更改姓氏,您将如何只更改其实例的lastName值而不更改整个类?
首先,我尝试创建两个实例:
FamilyMember john = new FamilyMember();
FamilyMember ann = new FamilyMember();
ann.lastName = "Stewart";
但这改变了整个班级。 我尝试在FamilyMember类中创建一个方法来设置一个新的lastName:
void changeLastName(String newName) {
lastName = newName;
}
甚至尝试在void之前添加“ static”。 但是所有这些都只是在改变整个类的价值。 我在论坛上发现了类似的问题,但都没有解决这个特定问题。
但这改变了整个班级。
确实,您将姓氏设为类成员,而不是实例成员。 类成员不与实例绑定。 因此,您看到了您不想要的奇怪行为。
只需删除静态。
private String lastName = "Doe";
您可以删除姓氏的静态修饰符,如果要为每个实例设置一个默认值,以后可以对其进行修改,则可以为其使用多个构造函数,也可以将setter用作姓氏。
例如:
class FamilyMember {
String lastName;
String name;
int age;
public FamilyMember(final String name, final int age) {
this.lastName = "Doe";
this.name = name;
this.age = age;
}
public FamilyMember(final String lastName, final String name, final int age)
{
this.lastName = lastName;
this.name = name;
this.age = age;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.