public class Cla
    {
        private int x;        public int caculate(Cla c)
        {            c.x = 0;
            return x + c.x;
        }        public int getX()
        {
            return x;
        }        public void setX(int x)
        {
            this.x = x;
        }
    }其中caculate()里我竟然可以直接访问私有变量x。我觉得即使同属一个类,也不应该开放私有变量啊。这是为什么?

解决方案 »

  1.   

    私有成员,在类外面不能引用。private int x;Cla cla = new Cla()
    cla.x 这样引用是错的如果public int x;Cla cla = new Cla()
    cla.x 这样引用是对的
      

  2.   

    对于类来说, 他自己函数当然能够访问自己的私有成员, 而caculate(Cla c) Cla c 无非是将自己这个类实体化了对象, 当然能访问了
      

  3.   

    应该可以这样解释:在类的本身中可以;但在其他类或子类中均不能;以上代码还是被认为在Cla中
      

  4.   

    看来是我没说清。
    我意思是为什么允许访问c.x。x对于c来说是私有的啊!
      

  5.   

    在外边看的确是私有的,外边是看不到的,但是你这方法是在类里面,为什么不能访问?如果这里还不能访问那么你认为这个PRIVATE在什么地方能够访问?
      

  6.   

    不仅如此,就连嵌套类型定义也是如此
    如有类A和B,B在A内部定义的,如果A有个私有变量c那么不仅A中的方法可以用上面的方法访问c就连B中的方法也可以