1 minute read

1. 생성자(Constructor)란??

  • 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
  • 인스턴스 변수의 초기화 또는 인스턴스 생성시 수행할 작업에 사용
  • 몇가지 조건을 제외하고는 메서드와 같습니다.
  • 모든 클래스에는 반드시 하나 이상의 생성자가 있어야 합니다.


▶ 생성자의 조건

  • 생성자의 이름은 클래스의 이름과 같아야 합니다.
  • 생성자는 리턴값이 없습니다.


▶ 생성자 정의

클래스이름 (타입 변수명, 타입 변수명, ...) {
	//인스턴스 생성시 수행될 코드

	//주로 인스턴스 변수의 초기화 코드를 적습니다.
}


▶ 생성자의 유형

class Card{
	...

	Card(){        //매개변수가 없는 생성자.
		//...
	}

	Card(String shape, int num)( //매개변수가 있는 생성자
		//...
	}

	...
}


▶ 생성자 호출하기

Card card = new Card(); //인자가 없는 생성자 호출
Card card2 = new Card("Heart", 7); //인자가 있는 생성자 호출


▶ 생성자 예제코드

Card.java

/**
 * @file name : Card.java
 * @date : 2013. 8. 15.
 * @discription : 카드 클래스
 * @author Cremazer(cremazer@gmail.com)
 */
public class Card {

	String shape = "Spade"; // 카드 모양
	int num = 1; // 카드 번호

	Card() {
		System.out.println(shape + " " + num + " 카드를 생성하였습니다.");
	}

	Card(String shape, int num) {
		System.out.println(shape + " " + num + " 카드를 생성하였습니다.");
	}
}


CardTest.java

/**
 * @file name : CardTest.java
 * @date : 2013. 8. 15.
 * @discription : 카드를 생성하는 클래스
 * @author Cremazer(cremazer@gmail.com)
 */
public class CardTest {
	public static void main(String[] args) {
		Card card1 = new Card();
		Card card2 = new Card("Heart", 4);
	}
}


▶ 결과

Spade 1 카드를 생성하였습니다.
Heart 4 카드를 생성하였습니다.


card1인스턴스는 생성할 때 인자값이 없으므로 디폴트 카드가 생성되었고, card2인스턴스는 생성할 때 인자값을 넘겨주어 모양과 값이 있는 카드가 생성되었습니다.

이처럼 Java에서 생성자는 클래스를 처음 만들 때 사용하는 new 연산자를 통해 호출되며, 객체(Object)를 생성하려면 반드시 생성자가 호출되어야 합니다.