Nested Classes
The Java programming language allows you to define a class within another class. Such a class is called a nested class.
Nested classes are divided into two categories: static and non-static.
Nested classes that are declared static are called static nested classes.
Non-static nested classes are called inner classes.
class OuterClass {
...
static class StaticNestedClass {
...
}
class InnerClass {
...
}
}
A nested class is a member of its enclosing class.
Non-static nested classes (inner classes) have access to other members of the enclosing class, even if they are declared private.
Static nested classes do not have access to other members of the enclosing class.
As a member of theOuterClass, a nested class can be declaredprivate,public,protected,
or package private.
Local Class
Local classes in Java are like inner classes (non-static nested classes) that are defined
inside a method or scope block ({ ... })
inside a method.
Anonymous Class
Anonymous classes in Java are nested classes without a class name. They are typically declared as either subclasses of an existing class, or as implementations of some interface
Anonymous classes are defined when they are instantiated. Here is an example that declares an anonymous subclass of a superclass called
SuperClass:
public class TopClass {
public void display() {
System.out.println("TopClass");
}
}
TopClass objct = new TopClass() {
public void display() {
System.out.println("Anonymous class");
}
};
objct.doIt();
A Java anonymous class can also implement an interface instead of extending a class. Here an example:
public interface Intrfc { public void display(); } MyInterface objct = new MyInterface() { public void display() { System.out.println("Anonymous class"); } };objct .doIt();
You can declare fields and methods inside an anonymous class, but you cannot declare a constructor.
You can declare a static initializer for the anonymous class instead, though.
There are basically three advantages of inner classes in java. They are as follows:
1) Nested classes represent a special type of relationship that is it can access all the members (data members and methods) of outer class including private.
2) Nested classes are used to develop more readable and maintainable code because it logically group classes and interfaces in one place only.
3) Code Optimization: It requires less code to write.
Comments
Post a Comment