2011. 5. 20. 19:50

자바(Java)에서 변수에 값을 주고 받는 setter와 getter

자바에서 변수의 기본 속성은 폐쇄적이고 이를 의미하는 키워드는 private이다. 이는 프로그램 안의 변수에 값을 직접 입력할 수 없다는 것을 의미한다. 대신 값을 주고 받는 방식을 메소드로 처리하여 간접적으로 입력하고 그걸 받아서 가져올 때에도 메소드에 '물어서' 가져온다.

이렇게 일견 번거로워 보이는 방법을 쓰는 이유는 방대한 양의 소스코드를 실제 업무에서 제작할 때 기존의 절차적 프로그래밍 방식이 변수에 값을 직접 입력함으로써 유발되는 발견하기 어려운 에러를 최대한 방지하기 위함이다.

  1: class Dog {
  2:  //멤버 변수 선언부
  3:  private String name ;
  4:  private String color ;
  5: 
  6:  //setter
  7:  public void setName(String name) {
  8:   this.name = name;
  9:  }
 10: 
 11:  public void setColor(String color) {
 12:   this.color = color;
 13:  }
 14: 
 15:  //getter
 16:  public String getName() {
 17:   return this.name ;
 18:  }
 19: 
 20:  public String getColor() {
 21:   return this.color ;
 22:  }
 23: 
 24:  //멤버 함수 선언부
 25:  public void bark() {
 26:  }
 27: 
 28:  public void eat() {
 29:  }
 30: }
 31: 
 32: public class DogTest {
 33:  public static void main(String[] args)  {
 34:   Dog dog = new Dog() ;
 35: 
 36:   dog.setName("바둑이") ;
 37:   dog.setColor("흰색") ;
 38: 
 39:   System.out.println(dog.getName()) ;
 40:   System.out.println(dog.getColor()) ;
 41: 
 42:   //위와 동일한 결과
 43:   String dogName = dog.getName() ;
 44:   String dogColor = dog.getColor() ;
 45: 
 46:   System.out.println(dogName) ;
 47:   System.out.println(dogColor) ;
 48:  }
 49: }