Describe Inner Classes in java?
An inner class is a class whose body is described inside another class, referred to as the top-level class. For instance:
public class Queue {
Element back = null;
public void add(Object o) {
Element e = new Element();
e.data = o;
e.next = back;
back = e;
}
public Object remove() {
if (back == null) return null;
Element e = back;
while (e.next != null) e = e.next;
Object o = e.data;
Element f = back;
while (f.next != e) f = f.next;
f.next = null;
return o;
}
public boolean isEmpty() {
return back == null;
}
// Here's the inner class
class Element {
Object data = null;
Element next = null;
}
}
Inner classes may also holds methods. They may not contain static members.
Inner classes within a class scope can be public, private, protected, final, abstract.
Inner classes can also be used inside methods, loops, and other blocks of code surrounded by braces ({}). Such a class is not a member, and thus cannot be declared public, private, protected, or static.
The inner class has access to all the methods and fields of the top-level class, even the private ones.
The inner class's short name might not be used outside its scope. If you absolutely must use it, you can use the fully qualified name instead. (For instance, Queue$Element) Therefore, if you require doing this you should almost certainly have made it a top-level class instead or at least an inner class inside a broader scope.
Inner classes are most useful for the adapter classes needed through 1.1 AWT and JavaBeans event handling protocols. They permit you to implement callbacks. In most other languages this would bo done along with function pointers.