我不倾向于从一个 对象 可以访问另一个 对象的 角度来考虑它,而是从什么 代码 可以访问对象中的哪些数据来考虑。
在Java(和C#,btw)中,类中的代码可以访问同一类的任何对象的私有成员。然后,您将获得包装/装配体访问权限和公共访问权限。
棘手的是受保护的访问,这是 对子类中的 代码 的 访问-
但它取决于目标对象:仅当对象的实例类型与对象的位置相同时,才允许您访问该对象的受保护成员。代码或某些子类-即使它是由父类 公开 的。例如,假设您有:
class Parent{ protected int x;}class Child1 extends Parentclass Child2 extends Parentclass Grandchild extends Child1然后,在
Child1代码中,您只能访问
Parent.x(在编译时)已知为
Child1或实例的对象
Grandchild。例如,您不能使用
newParent().x或
new Child2().x。



