I am not inclined to think about it from the point of view of one object that has access to another, but rather what code has access to the data that is in the object.
Java ( #, btw) . / .
- , , : , , - - . , , :
class Parent
{
protected int x;
}
class Child1 extends Parent
class Child2 extends Parent
class Grandchild extends Child1
Child1 Parent.x , ( ) Child1 Grandchild. , new Parent().x new Child2().x.