我刚刚开始学习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;
}
甚至尝试添加静态'无效之前。但所有这些只是不断改变整个班级的价值。我在论坛上发现了类似的问题,但没有一个问题涉及这一特定问题。
答案 0 :(得分:0)
但这改变了整个班级。
确切地说,你的姓氏是一个班级成员而不是实例成员。类成员不与实例绑定。因此,您会看到您不想要的奇怪行为。
只需删除静态。
private String lastName = "Doe";
答案 1 :(得分:0)
您可以删除lastname的static修饰符,如果要为以后可以修改的每个实例创建一个默认值,可以使用多个构造函数,或者使用setter作为lastname。
e.g:
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;
}
}