Java 생성자와 오버로딩 예제 – 4

public class Time { 
    private int hour; 
    private int minute; 
    private int second; 
 
    //첫 번째 생성자 
    public Time(){ 
        this(0,0,0); 
    } 
 
    //두 번째 생성자 
    public Time(int h, int m, int s){ 
        hour = ((h>=0 && h < 24) ? h:0); //삼항연산자로, (h >= 0 과 h < 24)를 만족하지 않으면 0을, 만족하면 h를 hour에 대입 
        minute = ((m >= 0 && m < 60) ? m : 0); //각각 인수에 올바르지 않은 값이 있다면 이를 0으로 치환 
        second = ((s>= 0 && s < 60) ? s : 0); 
    } 
 
    // 시:분:초의 형식으로 출력 
    public String toString(){ 
        return String.format("%02d:%02d:%02d", hour, minute, second); 
        //String.format은 printf와 유사한것으로 보임. 
    } 
} 

 

public class TimeTest { 
    public static void main(String args[]) { 
        Time time = new Time(); 
        System.out.println("기본 생성자 호출 후 시간 : " + time.toString()); //기본 생성자 호출시 
 
        Time time2 = new Time(13,27,6); 
        System.out.println("두 번째 생성자 호출 후 시간 : " + time2.toString()); //제대로된 값을 입력했을 시 
 
        Time time3 = new Time(99,66,77); 
        System.out.println("올바르지 않은 시간 설정 후 시간 : " + time3.toString()); //올바르지 않은 값을 입력했을 시 
    } 
}