Home > DeveloperSection > Articles > Java Inner Class

Java Inner Class


Java Java  J2EE  Class 
Ratings:
0 Comment(s)
 694  View(s)
Rate this:

Java Inner Class

 

In java ,Inner class or nested class is declared inside the class or interface. We use inner class because it increases more readable & maintainable of code.

It can provide to access all the member of outer class including private data member or methods.

Class OuterEx
{
Class Inner {}
}

Advantage:

1.       It can access all the data members & methods of outer class including private.

2.       Increases readability & maintainability of code.

3.       Required less coding.

 

Non-Static Nested Classes are also known as Inner Classes.

 

I.                    Non-Static Nested Class (Inner Class)

 

    i. Member inner class

      A class i.e. declared outside a method and inside a class is called member inner class.

class MemberOuter{  
 private int data=130;  
 class Inner{  
  void msg(){System.out.println("data : "+data);}  
 }  
 public static void main(String args[]){  
  MemberOuter ob=new MemberOuter();  
  MemberOuter.Inner in=ob.new Inner();  
  in.msg();  
 }  
}  

Output:

130

 

 

ii.      Anonymous class:

A class that have no name is known as anonymous inner class. It should be used if you have to override method of class or interface. Anonymous inner class can be created by two ways:

1.    Class (may be abstract or concrete).

2.    Interface

abstract class Emp{  
  abstract void see();  
}  
class AnonymousInner{  
 public static void main(String args[]){  
  Emp p=new Emp(){  
  void see(){System.out.println("Nice to see you again");}  
  };  
  p.see();  
 }  
}  

Output:

Nice to see you again

 

 

    iii.  Local inner class:

  A class i.e. created inside a method is known as a local inner class. If you want to invoke the methods of local inner class, you must instantiate this class inside the method.

Local variable can’t be private, public or protected. Local inner class cannot invoked from outside the method.

 

class localInner{  
  void display(){  
  int value=500;//local variable must be final till jdk 1.7 only  
  class Local{  
   void msg(){System.out.println(value);}  
  }  
  Local l=new Local();  
  l.msg();  
 }  
 public static void main(String args[]){  
  localInner obj=new localInner ();  
  obj.display();  
 }  
}  
 

Output:

500

 

 

II.                  Static class

A static class i.e. created inside a class is called static nested class. It can’t access non-static data members and methods. It can be accessed by outer class name.

  • It can access static data members of outer class including private.
  • Static nested class can’t access non-static (instance) data member or method.
class OuterOne{  
  static Sting
Name=”Anupam Mishra”
Name=”Anupam Mishra”;  
  static class Inner{  
   void msg(){System.out.println("Name is "+Name);}  
  }  
  public static void main(String args[]){  
  OuterOne.Inner obj=new OuterOne.Inner();  
  obj.msg();  
  }  
}  

Output:

Anupam Mishra

 

III.                Nested Interface

 

 

An interface i.e. declared within another interface or class is called a nested interface. The nested interfaces are used to group related interfaces so it can be easy to maintain. The nested interface must be referred by the outer interface or class. It can't be accessed directly class instance.

 

interface Showing{  
  void show();  
  interface Message{  
   void ss();  
  }  
}  
  
class NestedInterface1 implements Showing.Message{  
 public void ss(){System.out.println("This is nested interface");}  
  
 public static void main(String args[]){  
  Showable.Message message=new NestedInterface1();//interface is upcasting here  
  message.ss();  
 }  
}  

 

Output:

This is nested interface


Don't want to miss updates? Please click the below button!

Follow MindStick