Lesson 35 +10 XP

Java Inner Classes

Java Inner Classes

Java allows you to define a class inside another class. The inner class is called a nested class.

Inner class example

class OuterClass {
  int x = 10;

  class InnerClass {
    int y = 5;
  }
}

Creating an inner class object

To create an inner class object, you first create an outer class object:

OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.y + myOuter.x); // 15

Static inner class

A static inner class can be created without an outer object:

class OuterClass {
  int x = 10;

  static class InnerClass {
    int y = 5;
  }
}

OuterClass.InnerClass myInner = new OuterClass.InnerClass();

Why use inner classes

  • Group classes that are logically related.
  • Keep helper classes close to where they are used.
  • Access private members of the outer class.

TL;DR

  • Nested classes are defined inside other classes.
  • Non-static inner classes need an outer object.
  • Static inner classes can be created directly.