Meaningless Drivel is fun!
The moose likes Beginning Java and the fly likes Explain this!! Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Explain this!!" Watch "Explain this!!" New topic

Explain this!!

Sapna Korecherla

Joined: Jul 07, 2002
Posts: 10
I found this question in javaranch mock exam.
Can one object access a private variable of another object of the same class?
The Answer is YES. though the description was given, I could not understand it. I mean it was not clear.
Anyone! explain this!!

Marilyn de Queiroz

Joined: Jul 22, 2000
Posts: 9059

Politeness will get you a lot farther than demands.

"Yesterday is history, tomorrow is a mystery, and today is a gift; that's why they call it the present." Eleanor Roosevelt
Maulin Vasavada
Ranch Hand

Joined: Nov 04, 2001
Posts: 1873
hi sapna
all the scopes like Private, Protected etc are "LEXICAL". meaning, they are textual. they ARE NOT related to objects we create.
so, if i have private int x in my class C then i can refer to variable x withing the class definition ANYWHERE regardless of which object it belongs.

this will print swapped values as we exchanged the values of c1 and c2 objects.
here we access c2.x at line 1 but still it works! why? because the access of var x is not related to the object of class C (that is c2 here) but its LEXICAL. we are referring to var x in the textual scope of class C. thats why it works.
in the S.o.p in main method i have used c1.x and c2.getX() just to show that we can access x in anyway.
if we had another class called A and private var y in that class which we wanted to use in class C's method test() then it wouldn't work.
I agree. Here's the link:
subject: Explain this!!
It's not a secret anymore!