2016-11-14 3 views
-4

프로그램을 실행하는 동안 어느 시점에서 주 드라이버 클래스를 통해 클래스 내의 생성자에 정의 된 로컬 변수의 값을 수정할 수 있기를 원합니다. 어떻게이 일을 성취 할 수 있습니까?Main 클래스 또는 main 메서드 내에서 인스턴스 변수 수정

다음은 현재 사용중인 생성자의 샘플입니다.

public Scale() 
{ 
    weight = 0; 
    unit = "kg"; 
} 

드라이버에서 프로그램을 실행하는 동안 한 점에서 가중치의 값을 수정하고 싶습니다.

+0

사람들은 지역 변수없는 ... 등 setWeight()으로 간단, 이상의 규모에 항목을 추가하는 방법과 같은 복잡한 뭔가 일이 될 수 있습니다. 너 뭐 해봤 니? 객체의 인스턴스를 만드는 방법을 알고 있습니까? getter와 setter가 있습니까? –

+1

@ cricket_007 : getter와 setter 메소드에서 자바 텍스트를 정확히 읽어야합니다. 커뮤니티 위키로 답변되었지만, 기본 자바 텍스트를 공부함으로써 가장 좋은 답변을 얻었 기 때문에 투표를 종료하려고합니다. –

답변

1

외부 코드가 클래스의 필드 상태를 변경하거나 "변경"할 수있는 방법을 클래스에 제공하려는 것처럼 들리는 것 같습니다. 이러한 "mutator"메소드는 Java에서 "setter"메소드와 같이 일반적으로 사용됩니다. 여기에, public void setWeight(int weight) :

+0

나는 그것을 이해하지 못했다고 생각할 수 없다. 나는 이미 이것과 비슷한 세터/뮤 테이터를 가지고 있었지만 내 머리를 클릭하지는 않았다. 수업은 여전히 ​​나에게 상당히 새로운 것입니다. 감사! – JKawa

-1

가장 좋은 방법은 아마도 방법 일 수 있습니다. 그것은

public class Scale { 

    private float weight = 0; 
    private String unit = "kg"; 

    public void setWeight(float weight) { 
     this.weight = weight; 
    } 

    public void addItem(Item i) { // Assumes that Item is an interface defined somewhere else... 
     this.weight += i.getWeight(); 
    } 

    public static void main(String[] args) { 
     Scale s = new Scale(); 
     s.setWeight(4.0F); // sets the weight to 4kg 
     s.addItem(new Item() { 
      @Override 
      public float getWeight() { 
       return 2.0F; 
      } 
     }); // Adds 2kg to the previous 4kg -- total of 6kg 
    } 

} 
관련 문제