Explanation:
Complete Program:
NOTE:   The newly added statements are highlighted in bold.
// File: Time2.java
public class Time2
{
private int hour; // 0 - 23
private int minute; // 0 - 59
private int second; // 0 - 59
public Time2()
{
  this(0, 0, 0);
}
public Time2(int hour)
{
  this(hour, 0, 0);
}
public Time2(int hour, int minute)
{
  this(hour, minute, 0);
}
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;
}
public Time2(Time2 time)
{
  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;
}
public void setHour(int hour)
{
  if(hour < 0 || hour >= 24)
   throw new IllegalArgumentException("hour must be 0-23");
  
  this.hour = hour;
}
public void setMinute(int minute)
{
  if(minute < 0 || minute >= 60)
   throw new IllegalArgumentException("minute must be 0-59");
  
  this.minute = minute;
}
public void setSecond(int second)
{
  if(second < 0 || second >= 60)
   throw new IllegalArgumentException("second must be 0-59");
  
  this.second = second;
}
public int getHour()
{
  return hour;
}
public int getMinute()
{
  return minute;
}
public int getSecond()
{
  return second;
}
public String toUniversalString()
{
  return String.format("%02d:%02d:%02d", getHour(), getMinute(),
    getSecond());
}
public String toString()
{
  return String.format("%d:%02d:%02d %s",
    ((getHour() == 0 || getHour() == 12) ? 12 : getHour() % 12),
    getMinute(), getSecond(), (getHour() < 12 ? "AM" : "PM"));
}
// increment second
public void tick()
{
  if(second < 23)
  {
   second++;
  }
  else if(minute < 59)
  {
   second = 0;
   minute++;
  }
  else if(hour < 23)
  {
   second = 0;
   minute = 0;
   hour++;
  }
  else
  {
   second = 0;
   minute = 0;
   hour = 0;
  }    
}
// increment minute
public void incrementMinute()
{
  if(minute < 59)
  {
   minute++;
  }
  else if(hour < 23)
  {
   minute = 0;
   hour++;
  }
  else
  {
   minute = 0;
   hour = 0;
  }    
}
public void incrementHour()
{
  if(hour < 23)
  {
   hour++;
  }
  else
  {
   hour = 0;
  }    
}
}
------------------------------------------------------------------------------------------------------------
// File: Time2Test.java
public class Time2Test
{
   public static void main( String args[] )
   {      
      Time2 t = new Time2(22, 58, 59);
      System.out.println("Starting time: ");
      System.out.println("Time in 24 hours format: " + t.toUniversalString());
      System.out.println("Time in 12 hours format: " + t);
      System.out.println();
      
      t.incrementMinute();
      System.out.println("After incrementing one minute: ");
      System.out.println("Time in 24 hours format: " + t.toUniversalString());
      System.out.println("Time in 12 hours format: " + t);
      System.out.println();
      
      t.incrementHour();
      System.out.println("After incrementing one hour: ");
      System.out.println("Time in 24 hours format: " + t.toUniversalString());
      System.out.println("Time in 12 hours format: " + t);
      System.out.println();
      
      t.tick();
      System.out.println("After incrementing one second: ");
      System.out.println("Time in 24 hours format: " + t.toUniversalString());
      System.out.println("Time in 12 hours format: " + t);    
      System.out.println();
   }
}