public class ThikingTest {
  public static void main(String[] args){
  T t=new T();
  System.out.println(t.a); 
           t.getA();
  }
}
class T{
 private int a=5;
 public T(){
   
   }
 public int getA(){
   return this.a;
 }
}
在调用getA()的时候 this==t ,它不照样是t.a访问的吗?
这是怎么回事?大侠们谁能说出它的深层原理?

解决方案 »

  1.   

    私有的东西是不能通过对象名.属性名 这样访问.得通过共有的方法间接访问
    至于深层的原理.应该是sun定义的修饰符规则.
      

  2.   

    这个主要是为了防止你修改他的值
    这里不是只有get方法么
      

  3.   

    up,你要返回a,由于是在同一个类里面的私有变量,直接返回就可以了
    return a;
      

  4.   

    汗啊,没看明白问题...private,public 等修饰符决定了变量和方法的访问权限,或者说作用域.在ThikingTest类的实例所能访问到变量与方法域中根本就没有类T实例中的a字段.
    这和一般的权限控制差不多.但是他能访问到public的getA方法,然后getA方法由于属于T的实例方法,所以又能访问到T实例中的a字段.这都是规则,基于数据保护原则的规则.