2012-09-18 2 views
2

어떻게 setWav가 wav + " " + "Grapes"에서 wav 변경되지 않습니다 올 들어있는 인스턴스 변수를 변경하려면? Oranges? Grapes을 출력하려면 add 메서드를 만들어야합니까?는 어떻게 변경된 변수 예를

편집 : 도움을 주셔서 감사합니다 모두가, 많은 감사.

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

} 

답변

2

귀하의 getAdd 방법은 add를 반환합니다. 당신은 NewClass 생성자에서 add의 값을 설정하지만 wav 변경할 경우에도 아무데도, 따라서 그것은 (이 두 변수가 어떤 식 으로든 관련이없는 다른 영향을주지 않습니다 하나를 변경) 변경되지 않습니다. 이것을 시도 할 수 있습니다 :

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

당신은 012를 새로 고침하지 마시고번으로 setWav으로 전화하십시오. ctor에서 setter로이 행을 복사하십시오.

add = wav + " " + "Grapes"; 

그리고 작동합니다.

2

예제에서 생성자는 "추가"를 업데이트해야합니다. 그러나 문제는 클래스가 인스턴스화 될 때만 호출된다는 것입니다.

그것은이 라인에서 발생

: 합니다 NewClass 오브젝트 1 = 새합니다 NewClass();

는이에 setWav을 변경할 수 있습니다 :

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

그 때마다 setWav를 호출 추가, 업데이트 할이 방법을.