hai my exam was on 19th but due to some problems in prometric center the exam was postponed and now i will give my exam on 24sep . now i have 3days time i am little bit confused in inner classes pls give the details if anyone have
Nested Classes Inner Classes An inner class is a type of nested class that is not explicitly or implicitly declared static. Inner class types Local inner class. A local class is a nested class that is not a member of any class and that has a name. Every local class declaration statement is contained by a block. The scope of a local class declared in a block is within the rest of the block. Local class defined in a method has access to final method variables and also to the outer class's member variables. example Anonymous inner class. Anonymous inner class does not have name. It can extend a class or implement an interface but cannot do both at the same time. (For example, an anonymous inner class cannot say extends and implements at the same time.) The definition, construction and first use of such class is at same place. Programmer cannot define specific constructor for anonymous class but he/she can pass arguments (to call implicit constructor of its super class.) An anonymous class is never abstract. An anonymous class is always an inner class; it is never static. An anonymous class is always implicitly final. Anonymous class defined in a method has access to final method variables and also to the outer class's member variables. Non-static member class. A member class is a inner class whose declaration is directly enclosed in another class or interface declaration. Member inner class can be public, private, protected or default/friendly. Non-static member inner class has access to member variables of the outer class. Non-static member inner class can be instantiated on the instance of the outer class. example
Static nested classes. Nested class can also be static. It has access to only static member variables of the outer class. Static nested class may be instantiated/accessed without the instance of the outer class. It is accessed just like any other static member variable of a class. For example, instance method accessTest() of public static nested class "Inner" can be invoked as...
new com.witscale.scjp.examples.Outer.Inner().accessTest(); hi please refer to this site for examples:http://www.witscale.com/scjp_studynotes/code_examples/chapter7
Worth noting in the above that "inner" and "nested" aren't the same. The JLS (second edition) says that a nested class is any class declared within another class. "inner" refers to something slightly more particular. To understand the taxonomy of nested classes I've found it helpful to remember that they can be categorized three different ways: 1. Scope
Member class - declared directly in the body of the class, is a full-fledged member of the class, can be static or non-static.
Local class - declared inside a block (method, constructor, or initializer), scoped like a local variable, cannot be static.
Anonymous class - an unnamed class declared by extending an existing type using special syntax which forms an expression.
2. Inner - as stated in the above post. Just remember that the only things which are not inner are static member classes and interfaces (which are implicitly static). 3. Needs-an-enclosing-instance-of-its-enclosing-class - this is decidable by inspection: can the nested class see the instance members of its enclosing class? If so, it must be instantiated with an enclosing instance of that class. Here's a list of the various nested class possibilites with a  stating their status vis-a-vis this categorization:
static member class [never]
non-static member class [always]
local class [when declared in non-static context]
anonymous class [when declared in non-static context]
I will refrain from entering into any diatribe on this subject, will curb my desire to mention its unnecessary murkiness, will absolutely resist pointing out that it all could be fixed with a tiny rule change. You can find my declamations on this topic elsewhere, whether you're looking for them or not. Marlene uses a breakdown similar to this and it might be clearer.
Originally posted by Marlene Miller: I agree, Brian. "inner class" seems like a hodge-podge collection of heterogenous kinds of classes. You cannot even say - as some people do - that they all have an enclosing instance. When I organize the classes in my mind, I do not include the idea of inner classes. Classes are either top-level or nested. Nested classes are member or non-member. Members are static or non-static. Non-members are local or anonymous. THEN I draw a loop around those that are inner classes (non-static member, local and anonymous). A few times I scanned the JLS to see exactly what the purpose of the words inner class is. What rules apply to and only to all inner classes? Well, I forget what I found, but whatever it was, it was not very useful to me.
[ September 21, 2003: Message edited by: Steve Lovelace ]
Replying to my own post now (do I have bad breath?). I failed to mention what the scope is for an anonymous class. I skimmed the JLS and didn't see it mentioned. My word for it is "instantaneous scope", i.e., it is visible at the point at which it is declared, and nowhere else. A demonstration: [ September 21, 2003: Message edited by: Steve Lovelace ]