🔸 인스턴스가 생성될 때 호출되는 인스턴스 '초기화' 메서드
🔸 조건
- 생성자의 이름은 클래스의 이름과 같아야 한다.
- 생성자는 리턴값을 가지지 않는다.
- 모든 클래스는 하나 이상의 생성자를 가져야 한다.
생성자가 아니라 new 연산자가 인스턴스를 생성하는 것.
🔸 모든 클래스는 반드시 생성자를 가져야 하지만 생성자가 하나도 정의되지 않은 경우, 컴파일러가 자동적으로 기본생성자를 추가해서 컴파일한다.
class Math{ long a, b; // 기본생성자 Math(){} }
🔸 호출 시 매개변수를 넘겨받아 인스턴스 초기화에 사용할 수 있다.
🔸 매개변수를 가진 생성자가 있을 경우 컴파일러가 기본생성자를 추가해주지 않는다. ➡️ 기본생성자도 직접 추가해줘야 한다.
🔸 매개변수를 가진 생성자를 사용하면 코드를 좀 더 간결하게 만들 수 있다.class Car{ String color; String gear; int door; // 기본생성자 Car(){} // 매개변수를 가진 생성자 Car(String c, String g, int d){ color = c; gear = g; door = d; } } class Test{ public static void main(String args[]){ Car c1 = new Car(); c1.color = "black"; c1.gear = "manual"; c1.door = 4; Car c2 = new Car("black", "auto", 4); }
🔸 this() : 생성자, this : 참조변수
🔸 생성자끼리도 서로 호출이 가능하다.
🔸 호출 조건
- 생성자 이름으로 클래스 이름 대신 this를 사용한다.
- 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.class Car{ String color; String gear; int door; Car(){ this("white", "auto", 4); // Car(String color, String gear, int door)를 호출 ➡️ default값 설정 } Car(String color){ this(color, "auto", 4); // } Car(String color, String gear, int door){ this.color = color; this.gear = gear; this.door = door; // this.color : this - 인스턴스 자신을 가르키는 참조변수, color - 인스턴스 변수 ➡️ // color : 지역변수 } }