提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
重载构造函数的类声明
public class Main { public static void main(String[] args) /** from * 时代Java公众号 - N o w J a v a . c o m **/ { Time2 t1 = new Time2(); // 00:00:00 Time2 t2 = new Time2(2); // 02:00:00 Time2 t3 = new Time2(21, 31); // 21:31:00 Time2 t4 = new Time2(12, 25, 42); // 12:25:42 Time2 t5 = new Time2(t4); // 12:25:42 System.out.println("Constructed with:"); displayTime("t1: all default arguments", t1); displayTime("t2: hour specified; default minute and second", t2); displayTime("t3: hour and minute specified; default second", t3); displayTime("t4: hour, minute and second specified", t4); displayTime("t5: Time2 object t4 specified", t5);/**来自 n o w j a v a . c o m**/ // attempt to initialize t6 with invalid values try { Time2 t6 = new Time2(27, 74, 99); // invalid values } catch (IllegalArgumentException e) { System.out.printf("%nException while initializing t6: %s%n", e.getMessage()); } } // displays a Time2 object in 24-hour and 12-hour formats private static void displayTime(String header, Time2 t) { System.out.printf("%s%n %s%n %s%n", header, t.toUniversalString(), t.toString()); } } class Time2 { private int hour; // 0 - 23 private int minute; // 0 - 59 private int second; // 0 - 59 // Time2 no-argument constructor: // initializes each instance variable to zero public Time2() { this(0, 0, 0); // invoke constructor with three arguments } // Time2 constructor: hour supplied, minute and second defaulted to 0 public Time2(int hour) { this(hour, 0, 0); // invoke constructor with three arguments } // Time2 constructor: hour and minute supplied, second defaulted to 0 public Time2(int hour, int minute) { this(hour, minute, 0); // invoke constructor with three arguments } // Time2 constructor: hour, minute and second supplied public Time2(int hour, int minute, int second) { if (hour < 0 || hour >= 24) throw new IllegalArgumentException("hour must be 0-23"); if (minute < 0 || minute >= 60) throw new IllegalArgumentException("minute must be 0-59"); if (second < 0 || second >= 60) throw new IllegalArgumentException("second must be 0-59"); this.hour = hour; this.minute = minute; this.second = second; } // Time2 constructor: another Time2 object supplied public Time2(Time2 time) { // invoke constructor with three arguments this(time.getHour(), time.getMinute(), time.getSecond()); } public void setTime(int hour, int minute, int second) { if (hour < 0 || hour >= 24) throw new IllegalArgumentException("hour must be 0-23"); if (minute < 0 || minute >= 60) throw new IllegalArgumentException("minute must be 0-59"); if (second < 0 || second >= 60) throw new IllegalArgumentException("second must be 0-59"); this.hour = hour; this.minute = minute; this.second = second; } // validate and set hour public void setHour(int hour) { if (hour < 0 || hour >= 24) throw new IllegalArgumentException("hour must be 0-23"); this.hour = hour; } // validate and set minute public void setMinute(int minute) { if (minute < 0 || minute >= 60) throw new IllegalArgumentException("minute must be 0-59"); this.minute = minute; } // validate and set second public void setSecond(int second) { if (second < 0 || second >= 60) throw new IllegalArgumentException("second must be 0-59"); this.second = second; } // Get Methods