如下类:
class A
{
  private int i = 0;  public boolean equals(A a)
  { 
    return (this.i == a.i); // <-- 这里为什么可以访问私有变量? 
  }
}我只知道可以, 但没有追究过原因. 请明白之人正解!

解决方案 »

  1.   

    因为在类A中,总是可以访问类A的私有变量,即使是另外一个实例的私有变量。这个是Java中的规范来的
      

  2.   

    private i是在class A的内部定义的,所以在class A{}之内的方法可以访问它!但在其它的class里面就不可以了!
      

  3.   

    但是实例a, 对于A的equals(A)方法, 应该是个外部变量吧?
      

  4.   

    这个问题从理论上来理解确实存在争议。
    但java规定了,同一个类的所有实例,互相之间有完全访问权。就当它是个规定,记住就没错了。
      

  5.   

    呵呵, 也只能这样了. 下午一个刚学java的问, 一下给问住了 :)
      

  6.   

    private 是说只在当前类使用,不是说只在当前对象使用
      

  7.   

    private属性在本类中可以访问,该类的子类、包内类、包外类都没有访问权的。。
      

  8.   

    好好看看public,protect,private的权限吧  
      

  9.   

    private型变量只能在本类内可以被访问。
    实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。
      

  10.   

    public class A {

        private   int   i   =   0;      public   boolean   equalsA(A  a) 
        {   
            return   (this.i   ==   a.i);      
        } 
        public   boolean   equalsB() 
        {   
         B b=new B();
            return   (this.i   == b.v);      
        } 
        public   boolean   equalsC() 
        {   
         C c=new C();
            return   (this.i   == c.r);      
        } 
        class B{
         private int v=0;
        }
    }
    我試著用了一下,發現類中的子類的私有變量也可以直接訪問(如equalsB方法)
    C類是另外一個JAVA檔,其中的私有變量r就不可訪問
    PS:未查資料,如有不對的地方請不吝指正