JAVA

[Java] 생성자 this()

sagesse2021 2021. 10. 29. 18:28
반응형
public class Ex5 {

	public static void main(String[] args) {

		//생성자 this()
		//자신의 생성자 내에서 자신의 또 다른 생성자를 호출
		//-레퍼런스 this 사용과 동일하게 자신의 인스턴스에 접근하여
		// 다른 오버로딩 생성자를 호출하는 용도로 사용
		//- 생성자 오버로딩 시 인스턴스 변수에 대한 초기화 코드가 중복되는데
		//초기화 코드 중복을 제거하는 용도로 사용
		MyDate d1 = new MyDate();
		System.out.println(d1.year + "/" + d1.month + "/" + d1.day);
	
		MyDate d2 =  new MyDate(2021);
		System.out.println(d2.year + "/" + d2.month + "/" + d2.day);

	}

}

class MyDate {
	int year;
	int month;
	int day;
	
	public MyDate() {
		// 연도 : 1900, 월 : 1, 일 : 1 로 초기화
		// 자신의 생성자 내에서 다른 오버로딩 생성자 호출
		this(1900, 1, 1); // 다른 실행 코드보다 무조건 먼저 실행되어야 함
		System.out.println("MyDate() 생성자 호출됨!");
//		year = 1900;
//		month = 1;
//		day = 1;
//		this(1900,1,1); //생성자 내의 다른 실행코드보다 아래쪽에 생성자 this()가 올수 없음
	}
	//모든 인스턴스 변수 데이터를 전달받아 초기화하는 생성자
	public MyDate(int year, int month, int day) {
		System.out.println("MyDate(int,int,int) 생성자 호출됨!");
		this.year = year;
		this.month= month;
		this.day= day;
	}
	public MyDate(int year) {
		this(year, 1, 1);
		System.out.println("MyDate(int) 호출됨!");
		}
}
/*
MyDate(int,int,int) 생성자 호출됨!
MyDate() 생성자 호출됨!
1900/1/1
MyDate(int,int,int) 생성자 호출됨!
MyDate(int) 호출됨!
2021/1/1
*/
반응형