Абстрактный класс Java ускользает от многих разработчиков Java. Давайте узнаем, что он для нас делает и как его использовать.

Абстракционизм: продукт бездарных, проданный беспринципным совершенно сбитым с толку. Аль Капп

Я предполагаю, что вы слышали о заболевании, которое называется СДВ или синдром дефицита внимания. Во время недавней поездки в Париж мы с сыном обнаружили, что страдаем еще одним недугом с похожими инициалами. Дефицит искусства.

Мы можем смотреть на картины и скульптуры и находить это скучным. Там, где моей дочери нравился д’Орсе, мы искали фуд-корт. Где мы наслаждались эспрессо и свежевыжатым апельсиновым соком.

Абстрактный класс Java

В Java есть неполные абстрактные классы. Их нельзя реализовать как обычный класс. Для использования абстрактные классы должны быть разделены на подклассы. В этих классах мы можем объявлять абстрактные методы. Абстрактные классы похожи на интерфейсы в Java. Давайте углубимся в это сравнение.

Сравнивать

Как и интерфейсы, абстрактные классы не могут быть созданы. Если интерфейс будет содержать только сигнатуры методов, абстрактный класс может содержать тело метода. Абстрактные классы могут объявлять поля, которые не являются статическими и окончательными.

Если в интерфейсах все поля автоматически становятся общедоступными, статическими и окончательными. Мы можем реализовать столько интерфейсов, сколько захотим. Абстрактные классы похожи на обычные классы, и мы можем расширить только один.

В Руководстве по Java есть хорошие рекомендации по использованию абстрактных классов. Когда мы хотим разделить код между несколькими тесно связанными классами или ожидаем, что классы, расширяющие ваш абстрактный класс, имеют много общих методов или полей. Интерфейсы следует использовать, когда ожидаете, что несвязанные классы будут реализовывать ваш интерфейс или хотите указать поведение определенного типа данных.

Пример абстрактного класса Java

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

Этот абстрактный класс Battery имеет один реализованный метод и два абстрактных метода. Также определены два поля.

ComputerBattery - это конкретный класс Java. Следовательно, необходимо реализовать оба абстрактных метода, определенных Battery.

Аннотация и интерфейс?

Абстрактный класс может даже реализовать интерфейс. Это похоже на смешивание спагетти и картофельного пюре, но это законно!

Давайте возьмем наш интерфейс Student и смешаем его в абстрактном классе.

В нашем классе ProbationaryStudent мы не реализуем все методы, определенные в интерфейсе Student. Это возможно, поскольку класс отмечен как абстрактный.

Главный?

Вы бы подумали, что если бы у вас был основной метод в абстрактном классе, он бы работал?

Я тоже не думал, что это будет, но на самом деле он работает. Предлагаю вам попробовать это на себе. Как видите, абстрактные классы нашли свое место в Java. Подобно интерфейсам, но используется по-другому.

Где вы использовали интерфейсы Java?

Посмотрите больше интересного контента и подпишитесь на MyITCareerCoach.com