Local Inner Classes
Syntex Of Local Inner Class
[access-specifier] class OuterClass {
code...
[access-specifier] return-type MethodName(arguments){
class LocalInnerClass{
code...
}
code...
}
code...
}
- Local inner classes is declared inside a code block or method.
- Local inner classes are never declared with an access modifiers like public, protected, private, default. Their scope is always restricted to the block in which they are declared.
- Local inner classes are completely hidden from the outside code.
- Local inner classes not only access the instance variables but local variables of the method as well. It can only access the final local variables of its containing method.
- You can only use final modifier with local inner class.
Local Inner Class Example
class Outer {
int x;
Outer() {
x = 100;
}
void show(){
class LocalInner{
void msg(){
System.out.println("The value is = "+x);
}
}
LocalInner li = new LocalInner();
li.msg();
}
}
public class InnerDemo {
public static void main(String[] args) {
Outer obj = new Outer();
obj.show();
}
}
Output
The value is = 100
Anonymous Inner Classes
A class that has no name is known as anonymous inner class. They enable you to declare and instantiate a class at the same time. They are like local classes except that they do not have a name. Use them if you need to use a local class only once.
Syntax Of Anonymous Inner Class
HelloWorld hello = new HelloWorld() {
String name = "Hello World";
public void greeting() {
System.out.println(name);
}
Anonymous Inner Class Example
abstract class Employ{
abstract void salary();
}
public class InnerDemo {
public static void main(String[] args) {
Employ emp = new Employ(){
void salary(){
System.out.println("Employ Salary");
}
};
emp.salary();
}
}
Output
Employ Salary



