Java – What is Inner Class?4 min read

Java Inner class is also known as the nested class is a class within the class, method or block declared inside class or interface. The use of the inner class is to group the classes or interfaces logically in one place so that it becomes easy to read and maintain.

Java Inner class is of two types:

A. Non-static nested classes

  • Member inner class
  • Anonymous inner class
  • Local inner class

B. Static nested classes

A. Non-static nested classes in Java: (Inner class)

It is one of the types of java Inner class. As we have learned from the Access modifiers that we cannot declare a class with ‘private’ modifiers. But the inner class, that is the member of other class is declared then we can have the inner classes as ‘private’.

An inner class is of following types:

  • Member inner class
  • Anonymous inner class
  • Local inner class

1. Member inner class:

It is a Non-static nested class (inner class) that is declared inside a class and outside all the methods or blocks. If we declare it as private then that inner class cannot be invoked from an object outside the outer class of that inner class.

Syntax for member inner class in Java:

Let us use it in a program:

In the following example, we declare the private inner class within the outer class, which also contains a method ‘displayingInner()’ that instantiate an inner class and invoke the method that is present inside the inner class.

And the Main class instantiates the Outerclass class and invoke the method ‘displayingInner()’, that is the nesting done in here.

Note: That the InneerClass cannot be accessed outside the outer class because of its private modifier but it can be accessed by the method inside the OuterClass.

To demonstrate the example if Member inner Class in Java:


2. Anonymous inner class:

Anonymous inner class is a class that does not contain the class name. They are used in a class or interface whenever the user needs to override the methods. The declaration and instantiation of the Anonymous inner class are done at the same time.

There are two ways in which this class can be created. They are:

  • First Subclass or maybe abstract
  • Second interface

Let us see it individually:

Example of Anonymous inner class Using class in Java:


Example of Anonymous inner class using interface in Java:


3. Local inner class:

The class that is declared within the method of an outer class is called the Local inner class or method-local inner class. As the name suggests local, that is its restriction is within that method only, just like a local variable.

Example to demonstrate the local inner class in Java:


B. Static nested classes:

If a class within another class that is the nested class has the static modifier declared in it, then it is called static nested class. As this class is applied static, it will not be able to access the instance variables and methods of the outer class, it can only access the static member of the outer class.

Accessing static method of a static class in Java,

Output Static nested classes:


Java Program to check Krishnamurthy Number

In this tutorial, we will learn about Krishnamurthy numbers and write a Krishnamurthy Number program in Java. We will write two programs for Krishnamurthy number …
Read More

Java Program for ISBN Number

In this tutorial, we will learn about the ISBN (International Standard Book Number) and write a program to check for the ISBN Number in Java …
Read More

C++ Memory Management

Memory management refers to the process of managing the computer memory while assigning the space to the program’s variable to improve the overall performance. Requirement …
Read More

C++ Pointer to Pointer

As we know by now that a pointer stores the address of the pointed variable. But it is not the only use, pointer also stores …
Read More

C++ Passing Pointers to Functions

A function is a user-defined block of codes that executes some specific task assigned to it invoked by its name. If there is an argument …
Read More

C++ Null Pointer

We use a null pointer when we do not have the exact address to assign to a pointer. It is considered a good practice and …
Read More