객체를 생성하는 시점에 어떤 작업을 하고 싶을 때 생성자를 작성한다
주로 멤버 변수에 초기값을 전달하는데 사용된다
생성자는 인스턴스 생성 직후 바로 호출된다
new 키워드를 사용해 객체 생성 시 마지막 괄호를 추가하는 이유도
생성자를 호출하기 위함이다
객체를 생성하면서 바로 생성자 호출도 함께 일어난다는 의미를 포함한다
생성자는 new 키워드와 함께 사용하여 객체를 생성하는 역할을 하고
인스턴스를 반환하기 때문에 반환 값을 따로 작성하지 않는다
인스턴스의 this 는 자신의 참조값을 가리킨다
this 는 생략 가능하지만
생성자에서 초기값으로 받는 매개변수가 있다면
매개변수는 지역변수로 필드보다 우선순위가 높다
때문에 멤버변수에 접근 시 this 를 항상 사용하기도 한다
최근에는 초기값 매개변수와 멤버 변수의 이름을 달리하여 this 를 생략하는 쪽으로
발달하였다 ide 가 멤버 변수의 필드를 한 눈에 구분할 수 있도록 해주기 떄문
public class Member {
String name;
int age;
void Member(String name, int age) {
this.name = name;
this.age = age;
}
}
Member member1 = new Member("user1", 30);
생성자도 생성자 오버로딩을 통해 메서드처럼 여러 생성자를 같은 이름으로 작성 가능하다
오버로딩 시 this() 를 호출하면 생성자 내부에서 오버로딩된 다른 생성자를 호출할 수 있다
public class Member {
String name;
int age;
int grade
void Member(String name, int age) {
this(name, age, 50) // 기본값으로 50 을 설정하여 오버로딩 생성자 호출
}
void Member(String Name, int age, int grade) {
this.name = name;
this.age = age;
this.grade = grade
}
}
Member member1 = new Member("user1", 30);