반응형
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
*/
반응형
'JAVA' 카테고리의 다른 글
[Java] static 변수 (0) | 2021.10.29 |
---|---|
[Java] package (0) | 2021.10.29 |
[Java] this 키워드 (0) | 2021.10.29 |
[Java] 파라미터 전달 방식의 차이(기본데이터타입,참조데이터타입) (0) | 2021.10.29 |
[Java] Variable Arguments(가변형 인자) (0) | 2021.10.29 |