인스턴스 초기화 메서드
객체를 생성하기 위해 new 클래스(); 할 때 new와 함께 나오는 메서드클래스()가 생성자이다.
하는 일은 인스턴스 변수 초기화
생성자 선언방법
클래스{
클래스(){
}
}
생성자는 클래스 이름과 동일하게 만들어 주어야한다.
클래스에서 생성자를 작성하지 않으면 기본 생성자를 컴파일러가 기본적으로 생성해준다.
class person{
int age;
String name;
person(int age){
this.age = age;
}
person(int age, String name){
this.age = age;
this.name = name;
}
}
위와 같이 생성자를 두 개 이상 구현하는 것을 생성자 오버로딩이라고 한다.
person p1 = new person(10);
person p2 = new person(10, "james");
그러면 메인 함수에서 객체를 생성할 때 다양한 방법으로 만들 수 있다.
person p1 = new person(10);
person p2 = new person(10, "james");
이렇게 생성했을 때 p2에는 age와 name이 들어갔지만, p1의 경우 name이 null이다.
이렇게 이름이 정해지지 않은 경우 name에 "NoName"을 넣어주고 싶을 때
class person{
int age;
String name;
person(int age){
this(age,"NoName");
}
person(int age, String name){
this.age = age;
this.name = name;
}
}
person(int age){}생성자에서 this()를 이용해 person(int age, String name)에게 전달해주어 name도 초기화해주고 중복도 제거할 수 있다.