当前位置: 技术问答>java相关
private 的问题
来源: 互联网 发布时间:2015-07-15
本文导语: 同一个类的不同对象可以相互访问对方的private变量,这个该怎么理解?? | 类是对象的一个设计蓝图,它提供了完整的功能,具体的实现由各个对象实例去完成,不同的事例的对象都拥有各...
同一个类的不同对象可以相互访问对方的private变量,这个该怎么理解??
|
类是对象的一个设计蓝图,它提供了完整的功能,具体的实现由各个对象实例去完成,不同的事例的对象都拥有各自的实例变量,一个类的不同的实例变量都拥有各自的实例变量的一个拷贝,对于私有的变量只有自己的类的实例对象才可以直接访问。一个类不同的实例对象可以访问类变量。因为它对于不同的实例对象只有一个拷贝,是共享。还记得线程里start方法吗,它就是类方法(也叫静态方法)。
|
private的作用范围是:在定义的类内有效。你的情况是他们在访问自己的对象里面的private。因为是同一个类的对象所以他们有相同的成员变量,所以你在调用时,他们访问各自的。不是对方的。
|
我感觉这是一句费话,同一个类的不同对象绝大部分存在于其它类中,而在其它类中是不能访问类的私有成员的,即时他们相互自己可以使用对方的私有变量,但是由于他们存在的环境不允许这样做,等于不能!而在类自身中访问根本就没有什么可说的。
|
这样好象不行哦。
私有成员不是属于对象的吗?别的对象还可以存取,那还叫私有?
私有成员的值应该只能通过方法返回得到,不能直接取出。
这样不是破坏了类的封装性。
java能够这样吗?
c++是不能的。
私有成员不是属于对象的吗?别的对象还可以存取,那还叫私有?
私有成员的值应该只能通过方法返回得到,不能直接取出。
这样不是破坏了类的封装性。
java能够这样吗?
c++是不能的。
|
liushmh(c++) :也许你误会了,假设有class A 的两个对象a1 a2 ,a1 能访问
a2里的某个元素 那么必然是A里定义了 访问该元素的方法
而private是对于class来说的 不是object
a2里的某个元素 那么必然是A里定义了 访问该元素的方法
而private是对于class来说的 不是object
|
我认为wjmmml(笑着悲伤)说的是对的。
Y1并没有直接调用Y2的i,在CompareTo方法里参数是类You的一个实例(即Y2)
Y1是通过传了Y2这个参数,然后是Y2访问了私有变量i
Y1并没有直接调用Y2的i,在CompareTo方法里参数是类You的一个实例(即Y2)
Y1是通过传了Y2这个参数,然后是Y2访问了私有变量i
|
how can compiler know y!=this?
the statment "a and b are the same object" is determined at runtime.
so, it is not feasible to say "method can only access private members of the object itself".
in other words, access protection is at class-level. not object level.
the statment "a and b are the same object" is determined at runtime.
so, it is not feasible to say "method can only access private members of the object itself".
in other words, access protection is at class-level. not object level.