본문 바로가기
Language/JAVA

[JAVA]생성자에서 다른 생성자를 호출하는 this

by 바까 2020. 6. 17.
반응형

 

클래스에 생성자가 여러 개 있을 때 어떤 생성자에서 다른 생성자를 호출하는 경우가 종종 있다.

이 때,  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

댓글