2012-09-18 45 views
2

怎么会setWav不会改变wav + " " + "Grapes"wav一个实例变量?如果我想要输出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());  


    } 
} 


OUTPUT:

汉堡葡萄

汉堡葡萄


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; 
    }  

} 

回答

2

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

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

你不刷新add当你调用setWav。复制此行从ctor到setter:

add = wav + " " + "Grapes"; 

它会工作。

2

在你的例子中,构造函数负责更新“add”。但问题是它只调用一次,这是类实例化的时候。

它发生在这条线: 的NewClass object1 =新的NewClass();

你可以改变setWav到这一点:

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

这样它会更新增加每次setWav被调用。