2011. 5. 20. 19:22

자바(Java)의 생성자 개념

클래스를 만들게 되면 클래스명과 동일한 원형 메소드를 만들어 주는데 이를 '생성자'라고 한다.

  1: public class Car {
  2:  int speed ;
  3:  private int generationCapacity ;
  4:
  5:  //디폴트 생성자
  6:  Car () {
  7:  }
  8: 
  9:  //추가 생성자
 10:  Car(int val) {
 11:   this.speed = val ;
 12:  }
 13: 
 14:  public void run() {
 15:   System.out.println("속도 : ") ;
 16:  }
 17: 
 18:  public void stop() {
 19:   System.out.println("멈추다.") ;
 20:  }
 21:   
 22:  public String turn() {
 23:   return "회전" ;
 24:  }
 25: }
클래스에서 선언된 변수는 숫자일 경우 0, 문자일 경우 Null로 자동 초기화 되므로 생성자 안에 아무런 내용이 없더라도 실제로는 다음처럼 처리된다. 또한 디폴트 생성자에서도 변수에 임의의 값을 주어 초기화할 수도 있다.
  1: Car () {
  2:  // 자동으로 초기화
  3:  this.speed = 0 ;
  4:  this.generationCapacity = 0 ;
  5: }
생성자를 추가로  만들지 않는다면 기본(디폴트) 생성자는 가상머신이 자동으로 처리하므로 생략이 가능하지만 위 코드처럼 추가로 만들었다면 기본 생성자도 입력해 주어야 한다.

메시지를 가지는 생성자를 추가로 만들게 되면, 객체의 인스턴스를 선언할 때 초기값을 바로 부여해줄 수가 있게 된다.

  1: public class CarTest {
  2:  public static void main(String[] args)  {
  3:   Car mycar = new Car() ;
  4: 
  5:   Car porche = new Car(150) ;
  6:   Car lamborgini = new Car() ;
  7: 
  8:   porche.run() ;
  9:   lamborgini.run() ;
 10:  }
 11: }