hello marven In Java there are four types of nested class:
Static member class, also simply called nested class - They are declared static. Like other things in static scope, they do not have an enclosing instance, and cannot access instance variables and methods of the enclosing class. They are almost identical to non-nested classes except for scope details (they can refer to static variables and methods of the enclosing class without qualifying the name; other classes that are not one of its enclosing classes have to qualify its name with its enclosing class's name). Nested interfaces are implicitly static.
Inner class - The following categories are called inner classes. Each instance of these classes has a reference to an enclosing instance (i.e. an instance of the enclosing class), except for local and anonymous classes declared in static context. Hence, they can implicitly refer to instance variables and methods of the enclosing class. The enclosing instance reference can be explicitly obtained via EnclosingClassName.this. Inner classes may not have static variables or methods, except for compile-time constant variables. When they are created, they must have a reference to an instance of the enclosing class; which means they must either be created within an instance method or constructor of the enclosing class, or (for member and anonymous classes) be created using the syntax enclosingInstance.new InnerClass().
Member class - They are declared outside a function (hence a "member") and not declared "static".
Local class - These are classes which are declared in the body of a function. They can only be referred to in the rest of the function. They can use local variables and parameters of the function, but only ones which are declared "final". (This is because the local class instance must maintain a separate copy of the variable, as it may out-live the function; so as not to have the confusion of two modifiable variables with the same name in the same scope, the variable is forced to be non-modifiable.)
Anonymous class - These are local classes which are automatically declared and instantiated in the middle of an expression. They can only directly extend one class or implement one interface. They can specify arguments to the constructor of the superclass, but cannot otherwise have a constructor.
C++ has nested classes that are like Java's static member classes (first kind above), except that they are not declared with "static".
for more inf check source http://en.wikipedia.org/wiki/Inner_ class
Answered by
raj u
, an ibibo Master,
at
1:54 PM on May 28, 2008