Java Inner Class

Java Inner class questions are asked to put us in confusion and it is always better to know type of inner classes and how they can access the outer class details. Reasons for using inner classes, among them:
  • It is a way of logically grouping classes that are only used in one place.
  • It increases encapsulation.
  • Nested classes can lead to more readable and maintainable code.
Logical grouping of classes—If a class is useful to only one other class, then it is logical to embed it in that class and keep the two together. Nesting such "helper classes" makes their package more streamlined.

Increased encapsulation—Consider two top-level classes, A and B, where B needs access to members of A that would otherwise be declared private. By hiding class B within class A, A's members can be declared private and B can access them. In addition, B itself can be hidden from the outside world.

More readable, maintainable code—Nesting small classes within top-level classes places the code closer to where it is used.

Static inner class
As with class methods and variables, a static nested class is associated with its outer class. And like static class methods, a static nested class cannot refer directly to instance variables or methods defined in its enclosing class — it can use them only through an object reference.

Instance inner class

A non-static inner class has the outer class as an instance variable, which means it can only be instantiated from such an instance of the outer class:

Anonymous inner class
An anonymous inner class can come useful when making an instance of an object which certain "extras" such as overloading methods, without having to actually subclass a class. In below example we are using Thread using anonymous inner class.

  1. Anonymous class is declared and initialized simultaneously.
  2. Anonymous class must extend or implement to one and only one class or interface resp.
  3. As anonymouse class has no name, it can be used only once.
Below example explains mainly we have 3 type of inner classes.


  1. Most people don't have that willingness to break bad habits. They have a lot of excuses and they talk like victims. See the link below for more info.


  2. I am happy to find your distinguished way of writing the post. Now you make it easy for me to understand and implement the concept. Thank you for the post.


  3. This is really interesting and knowledgeable. Thanks for sharing. I really appreciate it a lot. Please do more blogs in the future. Thank you and God bless to the blogger!

  4. It is really a great work and the way in which u r sharing the knowledge is excellent.
    Thanks for helping me to understand basic java inner class concepts. As a beginner in java programming your post help me a lot.Thanks for your informative training in chennai | chennai's no.1 java training in chennai