I am new to Java. I'm a C++ programmer, reading some Java code. I have this class definition:
class Container {
long ID;
class Contained {
void foo(){
long parentID = ID;
}
}
}
I see that Contained can access any member of the Container class, simply by name.
I have one question:
What is going on here? In C++ these classes would be unrelated. But in Java, it seems, the contained class object seems to be implicitly tied to the instance of the parent class object.
Thanks Manish
PS: Sorry, I know I could pick up a book on Java, but I was hoping someone could help me.
Since the Contained
class is not declared as static
, it means that it can only exist within an instance of a Container
class and hence has access to all of the methods and variables of Container
.
If you had declared Contained
as static
, it would imitate the C++ usage that you're more used to -- that is, you could have an instance of the nested class without having an instance of Container
.
See Java inner class and static nested class for further details.