생성자 (Constructor)
생성자란 말 그대로 무언가를 생성하는 녀석을 의미합니다.
자바에서 무언가는 바로 객체를 의미합니다. 즉, 객체를 생성해 주는 녀석이라 생각하면 됩니다.
📌 사용법
사용법은 메서드와 거의 동일합니다만 메서드 명이 클래스 자기 자신이라는 것에 차이가 있습니다.
객체는 new 키워드와 함께 생성자를 호출하면 생성됩니다.
// 객체 생성!
Person person = new Person();
// 예시 클래스
public class Person{}
위에서 보면 클래스에 아무것도 없는데도 객체가 생성되었습니다.
이게 왜그러냐면 클래스에 기본 생성자가 없으면 컴파일러가 기본 생성자를 제공하기 때문입니다.
public class Person{
// 생성자 문법
// 접근제한자 클래스명 (타입 변수명...) { 멤버 변수 초기화 및 실행문}
// 기본 생성자
public Person(){
// 아무것도 없는 기본 생성자
}
}
다만, 매개변수가 있는 생성자를 만드는 순간 기본 생성자는 자동적으로 생성되지 않습니다.
기본적으로 멤버 변수를 초기화하기 위해서 매개변수를 받는 경우, 다음과 같이 이름을 동일하게 해서 사용하되 this를 이용해서 사용하는 편입니다.
💡 this. 란 참조 변수로써 객체 자기 자신을 가리킵니다. 이를 통해 자신의 멤버에 접근 가능합니다.
public class Person {
String name;
int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
생성자는 필요에 따라 여러 개를 가질 수 있으며, 접근 제어자를 통해 객체를 생성 못하게 막을 수도(싱글톤 패턴 등) 있습니다.
생성자를 여러개 만들때는 다음과 같이 오버로딩을 사용하기도 합니다.
public class Person {
String name;
int age;
int height;
private Person(String name){
this.name = name;
}
protected Person(String name, int age){
this(name); // this()는 자기자신의 생성자를 가리키며, 첫 줄에서만 사용 가능합니다.(두번째 줄 호출X)
this.age = age;
}
public Person(String name, int height){
this(name,77); // 나이를 77로 기본값 부여
this.height = height;
}
}