The Java programming language
allows you to define a class within a class. Such a class is called a nested
class or inner class.
The advantage of nested
classes are used to develop more readable and maintainable code because it
logically grouped with in the classes.
Types of Inner
classes
There
are two type of inner classes
1. Static inner class
2. Non-static inner
class
Static inner class
Static
inner class is declared with static modifier, refer below code snippet-
/**
* In this example outter class contains
StaticInner class
* @author Manoj
*/
public class OutterClass {
public static void main(String[] args) {
OutterClass.StaticInner staticInner = new OutterClass.StaticInner();
System.out.println(staticInner.getValue());
}
static class StaticInner {
public String getValue() {
return "I am static inner
class";
}
}
}
Non-static inner class-
There
are three type of non-static inner class.
1. Member class
2. Local class
3. Anonymous class
Member class
Member
class are also define as a member of class, they can access all methods and
members of outter class. Refer below code snippet-
/**
* In this example outter class contains
member Inner class
* @author Manoj
*/
public class OutterClass {
public static void main(String[] args) {
OutterClass.MemberInner memberInner = new OutterClass().new MemberInner ();
System.out.println(memberInner.getValue());
}
class MemberInner {
public String getValue() {
return "I am member inner
class";
}
}
}
Local class
Local
classes are declared within a block of code or with in a method and are visible
only within that block or method, refer below code snippet –
/**
* In this example outter class contains
method local Inner class
* @author Manoj
*/
public class OutterClass {
public static void main(String[] args) {
class LocalInner {
public String getValue() {
return "I am in
a method local inner class";
}
}
LocalInner localInner = new LocalInner();
System.out.println(localInner.getValue());
}
}
Note – Method local inner class can access only final local
variable
Anonymous class
An
anonymous class is a local class that has no name.
Code
snippet for anonymous class-
/**
* In this example we are creating an anonymous
class
* @author Manoj
*/
public class OutterClass {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
public void run() {
System.out.println("I am anonymous class");
}
};
runnable.run();
}
}
Nice information, very usefull thanks
ReplyDelete