생성자 (Constrtuctor)

  • 메소드(함수)의 일종
  • Class명과 같은 이름의 함수
  • 클래스를 초기화 할 때 쓰임 (예시: int sum = 0)

생성자의 특징

  • 다시 호출할 수 없다 (여러 번 반복해서 실행 불가)
  • Return 값이 없다
  • Over Load가 가능하다
  • Class를 생성할 때 자동 호출된다
  • 클래스를 초기화 할 때

참고 : Destructor

  • 소멸자
  • 현재는 사용 안 함 (가비지 컬렉터가 이어 받음)
  • C++에는 아직 있는 것으로 앎

생성자 코드 예시 1 - 기본 형식

// 메인함수
public class Sample {
    public static void main(String[] args) {
        MyClass cls = new MyClass();    // 여기에서 constructor가 호출됨, 이것이 매개변수임.
    }
}
// 클래스
public class MyClass4 {
    private int number;
    private String name;
    private double height;
    private String birth;

    // 기본 생성자
    public MyClass4() {
        System.out.println("MyClass4    MyClass4()");
    }
}

실행 결과

 

생성자 코드 예시 2 - 초기값을 넣어주는 생성자

반드시 모든 멤버 변수를 초기화 해줄 필요는 없다. (0개 이상)

public class MyClass4 {
    private int number;
    private String name;
    private double height;
    private String birth;
    
    public MyClass4(int number, String name, double height, String birth) {
        this.number = number;
        this.name = name;
        this.height = height;
        this.birth = birth;
    }
}
// 메인 함수에서 객체 생성
MyClass4 cls = new MyClass4(10, "김정은", "159", "2001/01/01");

 

생성자 코드 예시 3 - 매개변수가 없는 생성자 + this + 초기화 생성자

물론 이렇게는 잘 쓰지 않는다. (복잡하다)

초기화가 필요한 경우라면, init() 메소드를 따로 만드는 것이 일반적임.

// 기본 생성자
public MyClass4() {
    this(1000, "김성일", 172.5, "03/05/2019");
    System.out.println("MyClass4    MyClass4()");
}

// this로 호출되는 생성자
public MyClass4(int number, String name, double height, String birth) {
    this.number = number;
    this.name = name;
    this.height = height;
    this.birth = birth;
}

 

참고: IDE 단축키 Alt + Insert

에디터 창에서 누르면 메서드를 바로 생성할 수 있다. 초기화할 멤버 변수를 선택해서 생성자를 만들 수도 있고, 게터와 세터를 만들 때 특히 편하다. toString() 오버라이드 메서드도 이걸로 만들면 빠르다.

 

@Override
public String toString() {
    return "MyClass4{" +
            "number=" + number +
            ", name='" + name + '\'' +
            ", height=" + height +
            '}';
}

 

이런 식으로 작성된다

+ Recent posts