Внутренние классы в Java
Last updated: 4 мая 2025 г.Внутренний класс
– класс внутри другого класса.
Некоторая доп. функциональность, которая относиться только к внешнему классу.
Класс внутри другого класса имеет смысл создавать когда внутренний и внешний класс имеют сильную смысловую связь.
Допустим, мы создаём класс Car
(машина), и нам нужно описать двигатель этой машины. Логично, что двигатель тесно связан с машиной и не имеет смысла как самостоятельный объект без неё. В таком случае можно определить класс двигателя как внутренний класс внутри класса Car
.
Внутренний класс имеет доступ ко всем членам внешнего класса, включая приватные поля. Это ещё больше подчёркивает их взаимосвязь: объект двигателя (внутреннего класса) не существует без объекта машины (внешнего класса).
Соответственно, сначала создаётся объект внешнего класса — машины, а уже на его основе создаётся объект внутреннего класса — двигателя. Это отражает логическую зависимость и облегчает доступ двигателя к данным машины.
Поясним на примере:
1class Car {
2 private int carVarible = 100;
3
4 void print() {
5 //Если во внешнем классе нам нужно
6 //пользоваться внутренним классом
7 //то нужно создать объект внутреннего класса.
8 Motor motor = new Motor();
9 motor.MotorMethod();
10 }
11
12 //Внутренний класс.
13 class Motor {
14 public void MotorMethod() {
15 //Внутренний же класс может обращаться к
16 //элементам внешнего без создания экземпляра
17 System.out.println(carVarible);
18 }
19 }
20}
21
22class InnerClass {
23 public static void main(String[] args) {
24 Car car = new Car();
25 //Создание внутреннего класса.
26 //Как видим его нельзя создать
27 //без объекта внешнего.
28 Car.Motor motor = car.new Motor();
29 motor.MotorMethod();
30 }
31}
Вывод:

Следующие уроки
Статический класс
14
мин.
Ссылочные типы и типы значений
12
мин.
Передача в метод ссылочных типов и типов значений
9
мин.