Java Reference
In-Depth Information
Note
When you compile an enclosing class that contains a static member class,
the compiler creates a classfile for the static member class whose name consists of
itsenclosingclass'sname,adollar-signcharacter,andthestaticmemberclass'sname.
For example, compile
Listing 3-1
and you will discover
EnclosingClass$En-
closedClass.class
as well as
EnclosingClass.class
. This format also
applies to nonstatic member classes.
Nonstatic Member Classes
A
nonstatic member class
is a non-
static
member of an enclosing class. Each in-
stanceofthenonstaticmemberclassimplicitlyassociateswithaninstanceoftheenclos-
ing class. The nonstatic member class's instance methods can call instance methods in
theenclosingclassandaccesstheenclosingclassinstance'snonstaticfields.
Listing3-5
presents a nonstatic member class declaration.
Listing 3-5.
Declaring a nonstatic member class
class EnclosingClass
{
private int i;
private void m()
{
System.out.println(i);
}
class EnclosedClass
{
void accessEnclosingClass()
{
i = 1;
m();
}
}
}
i
,instancemethod
m()
,andnonstaticmemberclass
EnclosedClass
.Furthermore,
EnclosedClass
declares instance method
accessEnclosingClass()
.