Внутренний класс


В объектно-ориентированном программировании (ООП) внутренний класс или вложенный класс — это класс, полностью объявленный внутри тела другого класса или интерфейса. Он отличается от подкласса .

Экземпляр обычного класса или класса верхнего уровня может существовать сам по себе. Напротив, экземпляр внутреннего класса не может быть создан без привязки к классу верхнего уровня.

Возьмем абстрактное понятие a Carс четырьмя Wheels. У наших Wheels есть особая функция, которая зависит от того, являются ли они частью нашего Car. Это понятие не представляет Wheels как Wheels в более общей форме, которая могла бы быть частью любого транспортного средства. Вместо этого он представляет их как специфичные для файла Car. Мы можем смоделировать это понятие, используя внутренние классы следующим образом:

У нас есть класс высшего уровня Car. Экземпляры класса Carсостоят из четырех экземпляров класса Wheel. Эта конкретная реализация Wheelспецифична для автомобиля, поэтому код не моделирует общее понятие колеса, которое лучше было бы представить как класс верхнего уровня. Следовательно, он семантически связан с классом Car, а код Wheelкаким-то образом связан с его внешним классом, являясь составной единицей автомобиля. Колесо конкретного автомобиля уникально для этого автомобиля, но в общем случае колесо является агрегатной единицей автомобиля.

Внутренние классы предоставляют механизм для точного моделирования этого соединения. Мы можем называть наш Wheelкласс Car.Wheel, Carбудучи классом верхнего уровня и Wheelвнутренним классом.

Таким образом, внутренние классы допускают объектную ориентацию определенных частей программы, которые в противном случае не были бы инкапсулированы в класс.