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 소스 코드에서 인스턴스를 생성한 부분을 보면 생성 시 입력한 매개변수의 값에 따라 카드의
데이터가 입력된 것을 확인할 수 있다.