
#17 – Вложенные и анонимные классы
Видеоурок
Вложенный класс
Вложенные классы можно прописывать внутри других классов. Такое зачастую используется, когда вложенный класс дополняет основной класс и является его частью.
К примеру, мы разрабатываем класс «Автомобиль». В классе можно прописать множество методов и полей, но описать поведение двигателя или отдельных частей машины бывает куда проще за счёт еще одного дополнительного класса.
При этом, создавать класс наследник было бы неразумно, ведь автомобиль и двигатель хоть и являются одним целым, но все же имеют мало общих характеристик. Получается, что идеальным вариантом станет создание вложенного класса.
Создав вложенный класс вы можете прописать в нём дополнительные поля, методы и конструкторы и далее ссылаясь на главный класс вы можете дополнительно ссылаться на класс наследник.
Пример вложенного класса:
class Auto {
String model;
class Engine {
private boolean working = false;
public void work () {
working = true;
System.out.print("Двигатель запущен!");
}
}
Engine en = new Engine();
}
public class Main {
public static void main(String[] args) {
Auto bmw = new Auto();
bmw.en.work();
}
}
Подобный принцип используется во многих классах Java. К пример, если вспомнить класс «System», то в нём также есть вложенный класс и доступ к нему мы получаем за счёт объекта «out»:
// System - основной класс
// out - объект на основе вложенного класса
// print - метод, что находиться внутри вложенного класса
System.out.print("");
Анонимные классы
Анонимные классы - это классы, что не имеют имени и их создание происходит в момент инициализации объекта.
Такие классы много где используются в Java и с ними вы ещё часто будете сталкиваться.
Рассмотрим небольшой пример. Предположим что у нас есть интерфейс, который необходимо реализовать. Для реализации можно создать отдельный класс, в нём реализовать интерфейс, далее создать объект на основе класса и через объект ссылаться на методы классы.
Звучит логично, но не оправдано с точки зрения количества действий. Куда проще создать объект и для него сразу выполнить создание анонимного класса.
Пример создания анонимного класса:
Auto car = new Auto() {
void flyingMoto () {
System.out.print ("Летающий мотоцикл");
}
};
Материалы для курса
Чтобы скачивать материалы к видеокурсам необходимо оформить подписку на сайт
Задание к уроку
Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Также стоит посмотреть