Топ-100Внутренние классы в Java
LogoCodOrbits

Раздел: ООП

Здесь вы познакомитесь с объектно-ориентированным программированием в Java: классы, наследование, инкапсуляция и полиморфизм и многое другое.

Все разделы
Иконка ООП

Внутренние классы в Java

Last updated: 4 мая 2025 г.

Внутренний класскласс внутри другого класса.

Некоторая доп. функциональность, которая относиться только к внешнему классу.

Search Icon

Класс внутри другого класса имеет смысл создавать когда внутренний и внешний класс имеют сильную смысловую связь.

Допустим, мы создаём класс 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
мин.

Similar Articles Icon
Divider

Ссылочные типы и типы значений

12
мин.

Similar Articles Icon
Divider

Передача в метод ссылочных типов и типов значений

9
мин.

Similar Articles Icon