2011. 5. 21. 12:16

자바(Java) 생성자, setter와 getter, 오버로딩 종합 정리

Cat이라는 클래스에서는 각기 이름, 그리고 이름과 나이에 초기값을 줄 수 있는 생성자를 2개 추가 했고, 따라서 기본 생성자를 별도로 만들어 주었다. 이 기본 생성자에도 초기값을 줄 수 있으며 그렇지 않을 경우 숫자는 0, 문자는 Null로 자동 초기화 된다. 그리고 각 변수에 값을 주고 받는 setter와 getter가 만들어져 있다.

  1: public class Cat {
  2:  private String name ;
  3:  private int age ;
  4:  
  5:  //기본 생성자
  6:  public Cat() {
  7:   //코드가 만들어지지는 않지만 자동으로 초기화
  8:   //name = null ;
  9:   //age = 0 ;
 10:   
 11:   //생성자를 초기화 해줄 수도 있음
 12:   this.name = "냐옹이" ;
 13:   //this.age = 1 ;
 14:  }
 15:  
 16:  //사용자 정의 생성자. 이름 지정 가능
 17:  public Cat(String name) {
 18:   this.name = name ;
 19:  }
 20:  
 21:  //사용자 정의 생성자. 이름과 나이 지정 가능
 22:  public Cat(String name, int age) {
 23:   this.name = name ;
 24:   this.age = age ;
 25:  }
 26: 
 27:  public String getName() {
 28:   return name;
 29:  }
 30: 
 31:  public void setName(String name) {
 32:   this.name = name;
 33:  }
 34: 
 35:  public int getAge() {
 36:   return age;
 37:  }
 38: 
 39:  public void setAge(int age) {
 40:   this.age = age;
 41:  }
 42:  
 43: }
이 클래스를 활용하려면 main()이 있는 클래스를 만들어야 하고, 여기서 new를 통해 고양이 클래스 객체의 인스턴스를 생성한 후 사용한다. 인스턴스도 여러 개 만들수 있으며 이때 초기값을 아래처럼 주면 된다. 이후에는 cat1.setAge(3) 이런 식으로 값을 주면 되며 변수의 값을 가져오려면 다음 코드에서 나온대로 getter에게 물어서 가져와야 한다. 위와 아래 코드를 하나의 소스 파일에 같이 작성해도 되고, 별도의 소스 파일로 작성해도 된다.그러면 컴파일할 때 두 소스 파일이 같은 디렉토리에 있어야 하며 그렇지 않다면 package문을 써서 경로를 지정해 주어야 한다.
  1: public class CatTest {
  2: 
  3:  /-*
  4:   * @param args
  5:   *-
  6:  public static void main(String[] args) {
  7:   // TODO Auto-generated method stub
  8:   Cat cat1 = new Cat() ;
  9:   Cat cat2 = new Cat("나비") ;
 10:   Cat cat3 = new Cat("보슬이", 2) ;
 11:   
 12:   System.out.println(cat1.getName()) ;
 13:   System.out.println(cat2.getName()) ;
 14:   System.out.println(cat3.getName() + "\t" + cat3.getAge()) ;
 15:  }
 16: 
 17: }