2

为什么 setWav 不改变wavin wav + " " + "Grapes"?如果我想要输出,我是否必须为 add 创建一个 set 方法Oranges? Grapes

编辑:感谢大家的帮助,非常感谢。

package javaapplication1;

public class JavaApplication1 {

    public static void main(String[] args) 
    {
        NewClass object1 = new NewClass();
        System.out.println(object1.getAdd());
        object1.setWav("Oranges?");
        System.out.println(object1.getAdd());    


    }
}


输出:

汉堡葡萄

汉堡葡萄


package javaapplication1;

public class NewClass 
{
    private String wav;
    private String add;

    public NewClass()
    {
        wav = "Burgers";
        add = wav + " " + "Grapes";       

    }

    public void setWav(String wav)
    {
        this.wav = wav;        
    }
    public String getWav()
    {
        return wav;
    }

    public String getAdd()
    {
        return add;
    }    

}
4

3 回答 3

2

add调用时不会刷新setWav。将此行从 ctor 复制到 setter:

add = wav + " " + "Grapes";  

它会起作用。

于 2012-09-18T22:36:13.417 回答
2

您的getAdd方法返回add. add您在构造函数中设置了值,NewClass但在其他任何地方都没有设置,因此即使您更改它也保持不变wav(这两个变量没有任何关系,更改一个不会影响另一个)。你可以试试这个:

public void setWav(String wav) {
    this.wav = wav;  
    add = wav + " " + "Grapes";  // i.e. add = wav + " Grapes";
}
于 2012-09-18T22:36:15.350 回答
2

在您的示例中,构造函数负责更新“添加”。但问题是它只被调用一次,也就是类被实例化的时候。

它发生在这一行:NewClass object1 = new NewClass();

您可以将 setWav 更改为:

public void setWav(String wav)
{
    this.wav = wav;
    this.add = wav + " " + "Grapes";
}

这样,每次调用 setWav 时它都会更新 add 。

于 2012-09-18T22:38:55.843 回答