반응형
클래스에 생성자가 여러 개 있을 때 어떤 생성자에서 다른 생성자를 호출하는 경우가 종종 있다.
이 때, this를 사용해 클래스의 생성자에서 다른 생성자를 호출 할 수 있다.
class Person{
//필드 정의
String name;
int age;
//디폴트 생성자 정의
Person(){
//name="이름없음";
//age=1;
//this 예약어를 사용해 Person(String name, int age)생성자를 호출
this("이름없음",1);// 생성자 오버로딩
}
//이름과 나이를 부여하는 매개변수가 있는 생성자를 정의
public Person(String name, int age) {
//super();//상속
this.name = name;
this.age = age;
}
}
[주의사항1]
this로 다른 생성자를 호출 할 때는,
this를 사용하여 생성자를 호출하는 코드 이전에 다른 코드를 넣을 수 없다. 만약 다른 코드를 넣으면 오류 메세지가 나타난다.
class Person{
//필드 정의
String name;
int age;
//디폴트 생성자 정의
Person(){
name="이름없음";
age=1;
//this 예약어를 사용해 Person(String name, int age)생성자를 호출합니다.
this("이름없음",1);// 생성자 오버로딩
}
//이름과 나이를 부여하는 매개변수가 있는 생성자를 정의
public Person(String name, int age) {
//super();//상속
this.name = name;
this.age = age;
}
}
위에 name="이름없음"과 age=1의 주석을 풀면 오류가 나타난다.
[주의사항2]
생성자는 클래스가 생성될 때 호출되므로 클래스 생성이 완료되지 않은 시점에 다른 코드가 있다면 오류가 발생할 수 있다.
즉, 디폴트 생성자에서 생성이 완료된 것이 아니라 this를 사용해 다른 생성자를 호출하므로, 이때는 this를 활용한 문장이 가장 먼저 와야 한다.
반응형
'Language > JAVA' 카테고리의 다른 글
[JAVA]클래스 메서드 (0) | 2020.06.18 |
---|---|
[JAVA]static 변수 (0) | 2020.06.18 |
[JAVA] 정보 은닉(Information Hiding) (0) | 2020.06.16 |
생성자 오버로드(Constructor Overlaod) (0) | 2020.06.15 |
매개변수가 있는 생성자 만들기 (0) | 2020.06.15 |
댓글