使用相同对象类型的多个实例时出现问题

时间:2011-10-22 17:33:10

标签: java oop

我正在尝试创建一个名为Question的同一个自定义对象类型的实例。问题类具有getter函数来返回问题的问题和答案。如果我只创建一个问题对象,一切正常,但如果我在调用getter函数时创建两个具有不同名称和变量的函数,则始终返回最近初始化的Question对象中的值。

这就是我的意思:

Question q1 = new Question("What is the capital of France", "Paris");
Question q2 = new Question("What is the capital of England", "London");

System.out.println(q1.getQuestion());
System.out.println(q2.getQuestion());

在控制台中显示

What is the capital of England
What is the capital of England

我希望能够展示两个不同的问题。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:4)

没有看到我只能猜测的代码,但似乎Question类有静态变量而不是成员变量。

这就是为什么有些人主张总是用this.questionthis.answer来表示你的变量,所以你知道你指的是成员变量,而不是任何其他变量。它会很快指出这样的错误。

所以,如果你有

class Question {
    private static String question;
    private static String answer;

    public Question(String q, String a) {
        question = q;
        answer = a;
    }

    public String getQuestion() { return question; }
    public String getAnswer() { return answer; }

}

删除静态所以它只是

class Question {
    private String question;
    private String answer;

    public Question(String q, String a) {
        question = q;
        answer = a;
    }

    public String getQuestion() { return question; }
    public String getAnswer() { return answer; }

}

答案 1 :(得分:0)

使用new运算符时,会确保创建一个新对象。但是,如果在您的类中声明了static字段,它将在特定类的所有实例中共享。因此,使用static将导致此行为。