본문 바로가기

develop/Java

생성자 오버로딩(Constructor Overloading)

 

생성자 오버로딩

 

생성자는!!! 멤버변수를 초기화하는 놈이였다..

생성자 오버로딩은 메서드 오버로딩과 마찬가지로 생성자의 파라미터를 달리하여

동일한 이름으로 다른 기능을 수행하도록 하는 것.

 

생성자의 기본 목적이 멤버변수를 초기화하는 건데, 

멤버변수의 초기화를 다양하게 수행하기 위해 생성자의 파라미터를 다양하게 정의하는 것이다.

 

생성자는 new 다음에 위치하면 호출됨

 

	// 오버로딩 된 생성자를 호출하여 객체를 다양하게 초기화하기
		// MyDate() 생성자 호출
		MyDate d1 = new MyDate();
		d1.print();
		System.out.println("-----------");
		
		// MyDate(int) 생성자 호출
		MyDate d2 = new MyDate(2021);
		d2.print();
		System.out.println("-----------");
		
		// MyDate(int, int) 생성자 호출
		MyDate d3 = new MyDate(2021, 2);
		d3.print();
		System.out.println("-----------");
		
		// MyDate(int, int, int) 생성자 호출
		MyDate d4 = new MyDate(2021, 2, 15);
		d4.print();
// 날짜를 관리하는 MyDate 클래스 정의
class MyDate {
	int year; // 연도
	int month; // 월
	int day; // 일
	
	// 기본생성자 정의 - 2000년 1월 1일로 초기화
	public MyDate() {
		System.out.println("MyDate() 생성자 호출됨!");
		year = 2000;
		month = 1;
		day = 1;
	}
	
	// 연도(newYear)를 전달받아 초기화하고, 
	// 월과 일은 1월 1일로 초기화하는 생성자 정의
	public MyDate(int newYear) {
		System.out.println("MyDate(int) 생성자 호출됨!");
		year = newYear;
		month = 1;
		day = 1;
	}
	
	// 연도(newYear)와 월(newMonth)을 전달받아 초기화하고
	// 일은 1일로 초기화하는 생성자 정의
	public MyDate(int newYear, int newMonth) {
		System.out.println("MyDate(int, int) 생성자 호출됨!");
		year = newYear;
		month = newMonth;
		day = 1;
	}
	
	// 연도(newYear)와 월(newMonth), 일(newDay)을 
	// 모두 전달받아 초기화하는 생성자 정의
	public MyDate(int newYear, int newMonth, int newDay) {
		System.out.println("MyDate(int, int, int) 생성자 호출됨!");
		year = newYear;
		month = newMonth;
		day = newDay;
	}
	
	// 멤버변수 year, month, day 를 활용하여
	// 날짜를 "XXXX년 XX월 XX일" 형태로 출력하는 print() 메서드 정의
	// => 파라미터 없음, 리턴값 없음
	public void print() {
//		System.out.println(year + "년 " + month + "월 " + day + "일");
		System.out.printf("%d년 %d월 %d일 \n", year, month, day);
		
	}
	
	
	
}

 

'develop > Java' 카테고리의 다른 글

코드의 재사용  (0) 2021.02.18
this 키워드  (0) 2021.02.17
가변인자 Variable Arguments  (0) 2021.02.16
출력 메서드(System.out.p---) 분류(?)  (0) 2021.02.16
접근제한자, 메서드 오버로딩  (0) 2021.02.09