JAVA

생성자

쿠키는고양이 2022. 8. 28. 15:44

 

생성자는 인스턴스가 생성될 때 값을 초기화하는 용도로 사용된다.

생성자도 한 클래스의 메소드로써 호출이 가능하다.

하지만 일반적인 메소드와 다른 특수한 형태의 메소드라고 생각하면 된다.

 

생성자는 다음과 같은 특성을 갖는다.

1. 클래스와 동일한 이름을 갖는다.

2. 반환형이 없다. (return 을 사용할 수 없다.)

3. 매개변수는 사용할 수 있다. (매개변수가 없는 생성자를 '기본 생성자'라 한다.)

4. 한 클래스에는 반드시 하나 이상의 생성자가 있어야 한다.

- 선언이 없는 경우 자바 컴파일러가 기본 생성자를 자동으로 생성한다.

- 선언이 있을 경우에는 자바 컴파일러가 자동으로 생성하지 않는다.

5. 메소드 오버로딩을 사용하여 같은 이름의 생성자를 만들 수 있다.

(오버로딩에 대해선 다음 포스팅에서 자세하게 다룬다.)

 

<소스 코드>

public class Card {
	private String kind;		// 카드의 종류
	private int number;
	static int width = 100;
	static int heigth = 250;
	
	public Card() {
		// 기본 생성자
		kind = "Joker";
		number = 0;
	}
	
	public Card(String k , int  n) {
		// 매개변수가 있으므로 기본 생성자 아님
		kind = k;
		number = n;
	}
	public String getKind() {
		return kind;
	}

	public void setKind(String kind) {
		this.kind = kind;
	}

	public int getNumber() {
		return number;
	}

	public void setNumber(int number) {
		this.number = number;
	}
}
 

위의 코드를 보면 생성자의 특성 5가지가 모두 만족되는 것을 확인할 수 있다.

public class CardManager {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Card c1 = new Card("Heart", 2);     // 원하는 카드를 생성
		Card c2 = new Card(); 				// Joker 를 생성
                System.out.println("카드1 종류 : " + c1.getKind());
		System.out.println("카드1 번호 : " + c1.getNumber());
		System.out.println("카드2 종류 : " + c2.getKind());
		System.out.println("카드2 번호 : " + c2.getNumber());	
          }
}
 

실행 결과와 main 소스 코드에서 인스턴스를 생성한 부분을 보면 생성 시 입력한 매개변수의 값에 따라 카드의

데이터가 입력된 것을 확인할 수 있다.