有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

单个实例中静态变量的类更改值(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类中创建一个方法来设置新的姓氏:

void changeLastName(String newName) {
    lastName = newName;
}

甚至尝试在void之前添加“static”。但所有这些只是不断地改变整个类的值。我在论坛上发现了类似的问题,但没有一个是针对这个特定问题的


共 (2) 个答案

  1. # 1 楼答案

    可以删除lastname的静态修饰符,如果希望为以后可以修改的每个实例创建默认值,可以对其使用多个构造函数,或者对lastname使用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;
        }
    
    }
    
  2. # 2 楼答案

    But that changed the entire class.

    确切地说,您将姓氏设置为类成员,而不是实例成员。类成员不与实例绑定。因此你看到了你不想要的奇怪行为

    只需去除静电

    private String lastName = "Doe";