#17 - Анонимные классы и вложенные классы

#17 - Анонимные классы и вложенные классы

В языке Java можно создавать анонимные, а также вложенные классы. За урок мы научимся создавать, а также использовать классы, что прописываются внутри других классов.

Видеоурок

Вложенный класс

Вложенные классы можно прописывать внутри других классов. Такое зачастую используется, когда вложенный класс дополняет основной класс и является его частью.


К примеру, мы разрабатываем класс «Автомобиль». В классе можно прописать множество методов и полей, но описать поведение двигателя или отдельных частей машины бывает куда проще за счёт еще одного дополнительного класса. 


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


Создав вложенный класс вы можете прописать в нём дополнительные поля, методы и конструкторы и далее ссылаясь на главный класс вы можете дополнительно ссылаться на класс наследник. 


Пример вложенного класса:

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 месяца

Также стоит посмотреть

Создание приложения на React JS / Использование API
7 уроков
Разработка сайта на Java Spring Boot
7 уроков
Уроки Vue.js для начинающих
10 уроков
Java до профи: основы, UI дизайн и Android разработка
Изучение таск-менеджера Gulp 4
5 уроков
Изучение JavaScript: от нуля и до создания сайта
Комментарии для сайта Cackle