mymain 패키지 내용
package mymain;
import myutil.MyDate3;
public class MyMain_생성자 {
public static void main(String[] args) {
//객체
MyDate3 md1 = new MyDate3();
MyDate3 md2 = new MyDate3(2018);
MyDate3 md3 = new MyDate3(2018,4);
MyDate3 md4 = new MyDate3(2018,4,26);
md1.dsplay();
md2.dsplay();
md3.dsplay();
md4.dsplay();
//private 생성자이기 때문에 객체생성 못함
Math mt = new Math();
}
}
=================================
myutil 패키지
package myutil;
/*
생성자 메소드(Constructor
1. 객체의 초기화 목적으로 사용(멤버변수 초기화)
2. 형식) 클래스명과 동일함
3. 반환형 없음 (void 쓰면 안됨)
4. 객체생성시 자동호출
5. Overload(중복)가 가능
6. 생략가능함=>JVM이 기본생성자를 자동생성해서 처리해준다
(단, Overload된 생성자 있을시 무조건 기본생성자는 생성해야 됨)
*/
public class MyDate3 {
/*
이건 일반 메소드 생성자 아님
public void MyDate3() {}
*/
int year, month, day;
//setter 함수는 중간중간 수정할 때 값 세팅
//생성자(멤버변수 초기화 목적)
//default 생성자(기본생성자: 파라메터가 없는 생성자)
public MyDate3() {
System.out.println("--MyDate3()--");
//멤버변수 초기화
year = month = day = 1;
}
//생성자, 오버로드(인자1개 생성자)
public MyDate3(int y) {
System.out.println("--MyDate3(y)--");
year = y;
month = day = 1;
}
//생성자, 오버로드(인자2개 생성자)
public MyDate3(int y, int m) {
System.out.println("--MyDate3(y,m)--");
year = y;
month = m;
day = 1;
}
//생성자, 오버로드(인자3개 생성자)
public MyDate3(int y, int m, int d) {
System.out.println("--MyDate3(y,m,d)--");
year = y;
month = m;
day = d;
}
//메소드
public void dsplay () {
System.out.printf("%d년 %d월 %d일\n",year,month,day);
}
}