인스턴스가 생성될 때 호출되는 인스턴스 초기화 메소드

생성자의 조건

  1. 생성자의 이름은 클래스 이름과 같아야 한다.
  2. 생성자는 리턴값이 없다

생성자의 정의

클래스이름(타입 변수명, 타입 변수명, ...){
	//인스턴스 생성 시 수행 될 코드
    //주로 인스턴스 변수의 초기화 코드를 적는다.
}

생성자도 오버로딩이 가능하므로 하나의 클래스의 여러개의 생성자가 존재할 수 있다.

Card c = new Card();

  • 연산자 new에 의해서 메모리에 Card 클래스의 인스턴스가 생성된다.
  • 생성자 Card()가 호출되어 수행된다.
  • 인스턴스를 생성할 때 반드시 클래스 내에 정의된 생성자 중 하나를 선택하여 지정해주어야 한다.

기본생성자

  • 컴파일할 때 클래스에 생성자가 하나도 정의되어 있지 않은 경우 컴파일러는 자동으로 기본 생성자를 추가하여 컴파일한다.
  • 컴파일러가 자동 추가해주는 기본생성자는 매개변수와 내용이 없다.
    • Card() { }

매개변수가 있는 생성자

  • 매개변수가 있는 생성자를 사용한다면 인스턴스를 생성하는 동시에 원하는 값으로 초기화 할 수 있다.

생성자에서 다른 생성자 호출하기

조건

  • 생성자의 이름으로 클래스이름 대신 this를 사용한다.
  • 반드시 첫 줄에서만 호출이 가능하다.
Class Car {
	String color;
	String gearType;
	int door;

	Car() {
		this("white", "auto", 4);
	}

	Car(String color) {
		this(color, "auto", 4);
	}

	Car(String color, String gearType, int door) {
		this.color    = color;
		this.gearType = gearType;
		this.door     = door;
	}
}
  • 기본 생성자를 호출하면 매개변수가 3개인 생성자를 호출하기 때문에 기본값으로 초기화 된다.
  • 서로 호출하도록 하여 연결해주면 더 좋은 코드를 얻을 수 있다.

참조변수 this

  • this.color = color; 에서 this는 인스턴스 변수와 지역변수를 구분하기 위한 키워드이다.
  • this를 사용할 수 있는 것은 인스턴스 멤버뿐이다.
  • this는 참조변수, this()는 생성자로 완전 다르다.