LESSON 10
3.1 Lesson Outcomes
After completing this lesson, learners will be able to:
- Define nested classes in Java.
- Explain the purpose of nested classes.
- Create and use nested classes.
- Differentiate between outer and nested classes.
- Access members of nested classes in Java applications.
3.2 Overview
Java allows classes to be declared inside other classes. These are called nested classes. Nested classes help developers organize related classes together and improve program structure and readability.
This lesson introduces learners to nested classes and explains how nested classes interact with outer classes. Learners will also explore how nested classes support modular programming and improve application organization.
Nested classes are commonly used in:
- GUI applications,
- enterprise systems,
- event-driven programming,
- and complex software applications.
Understanding nested classes is important because they support advanced object-oriented programming and structured application design.
KT1001 — Introduction to Nested Classes
A nested class is a class declared inside another class.
The outer class contains the nested class within its body.
Structure of a Nested Class
public class OuterClass {
class InnerClass {
}
}
Explanation
| Component | Description |
|---|---|
| OuterClass | Main class |
| InnerClass | Nested class |
| class | Keyword used to declare classes |
Importance of Nested Classes
Nested classes help developers:
- organize related code,
- improve readability,
- reduce unnecessary class exposure,
- and simplify application design.
KT1002 — Outer and Inner Classes
The main class is called the outer class.
The class declared inside it is called the inner class.
Example
public class Car {
class Engine {
}
}
Explanation
| Class | Type |
|---|---|
| Car | Outer class |
| Engine | Inner class |
Real-World Example
In a car system:
- Car is the outer class,
- Engine is the inner class.
This relationship helps group related components together.
KT1003 — Creating Objects of Nested Classes
Objects of nested classes are created through objects of the outer class.
Example
public class OuterClass {
class InnerClass {
void display() {
System.out.println("Inner Class Method");
}
}
}
Creating Nested Class Objects
public class Main {
public static void main(String[] args) {
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.display();
}
}
Output
Inner Class Method
Importance of Object Creation Structure
Nested class objects depend on the outer class because:
- the nested class exists inside the outer class,
- and shares access to outer class members.
KT1004 — Accessing Outer Class Members
Nested classes can access members of the outer class.
Example
public class OuterClass {
int number = 50;
class InnerClass {
void show() {
System.out.println(number);
}
}
}
Output
50
Importance of Accessing Outer Members
Nested classes simplify:
- data sharing,
- communication between classes,
- and application organization.
KT1005 — Static Nested Classes
Java also supports static nested classes.
Static nested classes belong to the outer class itself instead of objects of the outer class.
Example
public class OuterClass {
static class NestedClass {
void display() {
System.out.println("Static Nested Class");
}
}
}
Creating Static Nested Class Objects
public class Main {
public static void main(String[] args) {
OuterClass.NestedClass obj = new OuterClass.NestedClass();
obj.display();
}
}
Output
Static Nested Class
Difference Between Inner and Static Nested Classes
| Inner Class | Static Nested Class |
|---|---|
| Requires outer object | Does not require outer object |
| Accesses outer members directly | Limited access to non-static members |
| Object-dependent | Class-dependent |
KT1006 — Real-World Use of Nested Classes
Nested classes are used in:
- GUI applications,
- event handling systems,
- banking systems,
- mobile applications,
- and enterprise software.
Examples:
- Button event handlers,
- menu systems,
- configuration classes,
- and helper classes.
Nested classes help organize related functionality inside applications.
3.5 Key Notes / Summary
- A nested class is declared inside another class.
- The main class is called the outer class.
- Nested classes improve code organization.
- Inner classes require outer class objects.
- Nested classes can access outer class members.
- Java supports static nested classes.
- Nested classes support modular application design.