集册 Java实例教程 重载构造函数的类声明

重载构造函数的类声明

欢马劈雪     最近更新时间:2020-01-02 10:19:05

756
提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
重载构造函数的类声明
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

   
展开阅读全文