本人初学,下面的一段代码来自书上,其中有一点不明白
public Time2( Time2 time)
 {
 //invoke Time2 constructor with three arguments
 this(time.hour, time.minute, time.second);
 }
其中  hour,minute,second都是private的,怎么可以用time.hour直接访问?完整代码如下:
//Fig. 8.5: Time2.java
//Time2 class declaration with overloaded constructors.
import java.text.DecimalFormat;public class Time2 {
 private int hour;//0~23
 private int minute;//0~59
 private int second;//0~59
 
 //Time2 constructor initializes each instance variable to zero;
 //ensures that Time object starts in a consistent state
 public Time2()
 {
 this(0,0,0);//invoke Time2 constructor with three arguments
 }
 
 //Time2 constructor :hour supplied,minute and second defaulted to 0
 public Time2( int h )
 {
 this(h,0,0);
 }
 
 //Time2 constructor :hour , minute and second supplied,second defaulted to 0
 public Time2( int h, int m)
 {
 this( h, m, 0);
 }
 
 //Time2 constructor: hour , minute and second supplied
 public Time2 (int h , int m ,int s )
 {
 setTime( h, m, s);
 }
 
 //Time2 constructor:another Time2 object supplied
 public Time2( Time2 time)
 {
 //invoke Time2 constructor with three arguments
 this(time.hour, time.minute, time.second);
 }
 
 //set a new time value using universal time ;perform
 //validity checks on data ; set invalid values to zero
 public void setTime ( int h, int m, int s)
 {
 hour = ((h >= 0&& h <24 )? h:0);
 minute = ((m >= 0&& m < 60)? m:0);
 second = ((s >= 0 && s <60)? s:0);
 }
 
 //convert to String in universal-time format
 public  String toUniversalString()
 {
 DecimalFormat twoDigits = new DecimalFormat ("00");

 return  twoDigits.format( hour ) +  ":" +
twoDigits.format( minute ) + ":" +twoDigits.format( second );
 }
 
 //convert to String in standrd-time format
 public String toStandardString()
 {
 DecimalFormat twoDigits = new DecimalFormat ("00");
 
 return ((hour == 12 || hour == 0)? 12 :hour % 12) + ":" +
 twoDigits.format(minute) + ":" + twoDigits.format( second ) +
 ( hour < 12 ? "AM":"PM");
 }
 
}//end class Time2

解决方案 »

  1.   

    私有的,也就是只属于Timer2自己的。
    它如果不能访问,那还有谁能访问?
      

  2.   

    这是一个构造方法,this(time.hour, time.minute, time.second);是自己访问自己的变量,当然可以了啊!希望能够帮助你理解此问题
      

  3.   

    private访问控制符限定该成员只能被本类的成员访问,而你的所有程序都是在一个类中,所以你定义的所有方法都是这个类的成员,不管你怎样限制都可以被访问
      

  4.   

    是Time2的,不过那也只能在类中才能直接用吧
    怎么可以在类外面直接调用?
      

  5.   

     就是解释一个变量访问权限的问题,没必要整这么多代码吧 ,private只有自己的类可以访问。
      

  6.   

    对内公开对外不公开,对外通过getXXX()方法访问。
      

  7.   

    只要是在同一个类中。所有的方法都能访问本类的private变量
      

  8.   

    hour, minute, second都是Time2实例对象time的变量,从本质上来说是属于类Time2的变量,那么在Time2里直接调用就不为过了。