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.
In Java these are called nested classes. There are several types of nested classes with different semantics. There is info at http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html .
In your example that is an inner class, so its instances exist within an instance of the outer class.
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.
This is a nested class. Its lifecycle is tied to the parent class. Read here for full understanding.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.