Static Nested Classes

A nested class that is declared static is called a static nested class.

Static Nested Classes

A nested class that is declared static is called a static nested class.

Static Nested Classes

Static Nested Classes

     

A nested class that is declared static is called a static nested class. Memory to the objects of  any static nested classes are allocated independently of any particular outer class object. A static nested class use the instance variables or methods defined in its enclosing class only through an object reference. A static nested class interacts with the instance members of its outer class or any other class just like a top-level class.

Given below is the syntax of the Static nested class that defines static nested class having keyword static in the outer class.

class OuterClass {
  ....
static class StaticNestedClass {
  ....
}
  class InnerClass {
  .... }
  }

Static nested classes can be accessed by using the enclosing class name:

OuterClass.StaticNestedClass

If we want to make an object of the static nested class then we have to write down the following code:

OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();

Here is an example of the Static nested class that processes of accessing the instance of the outer class inside the inner class. The example creates an "Outer" class with an instance x of value 100 and after that we call this value in inner class method check. Apart from that the example also creates another function check and call the inner class check() method inside it. When the example calls the check() with Outer class, it shows the value of Outer class instance x.

Here is the code of the Example :

Outer.java

import java.lang.*;

public class Outer{

  int x = 100;

  class Inner{

  int x = 200;

  public void check(){

   System.out.println("Value of x is: "+ Outer.this.x );

  }

  }

  public void check(){

  new Inner().check();

  }

  public static void main(String args[]){

  new Outer().check();

  }

}

Here is the output of the Example :

C:\roseindia>javac Outer.java

C:\roseindia>java Outer
Value of x is: 100

Download this Example:

The advantage of a static nested class is that it doesn't need an object of the containing class to work. This can help you to reduce the number of objects your application creates at runtime.