Объектно-ориентированное программирование на Java. Платформа Java SE

Тимур Машнин

Эта книга предназначена для тех, кто хочет научиться программировать на языке Java.С этой книгой вы обучитесь объектно-ориентированному программированию на платформе Java SE и научитесь применять принципы ООП на практике.Эта книга охватывает важные аспекты программирования на языке Java, начиная с основ и заканчивая объектно-ориентированным подходом и командной разработкой кода.

Оглавление

Абстрактные классы vs Интерфейсы

Теперь давайте вернемся немного назад и рассмотрим наследование разных объектов.

Предположим у нас есть эта иерархия.

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

Таким образом, в самом низу у вас есть наиболее специфический уровень.

В некоторых деревьях наследования, поскольку все становится более общим, объекты как бы перестают восприниматься как реальные экземпляры.

Как что такое объект рыбы?

Существует много разных видов рыб, и это слишком общее, чтобы действительно существовало в природе.

Поэтому, для представления таких объектов и вводится понятие абстрактный.

Абстрактные методы — это определение метода в суперклассе, но они не имеют реальной реализации.

Это только заголовок метода.

Что это такое, так это контракт между суперклассом и подклассом.

Как суперкласс, я диктую, что должен реализовывать подкласс.

Чтобы сделать это, вы помещаете ключевое слово abstract и затем заголовок метода с типом возврата и параметрами.

Вам также не нужно устанавливать видимость метода — публичный он или приватный, потому что вы решите это в подклассе.

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

Теперь, если у вас есть ключевое слово abstract где угодно, внутри этого класса, вы должны добавить слово abstract в заголовок класса.

Теперь, когда вы используете абстрактный класс и когда вы используете интерфейс?

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

Это похоже на добавление интерфейса к существующему суперклассу.

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

Так как абстрактный класс объявляет общую функциональность для семейства связанных классов.

Вы также используете абстрактный класс, если у вас есть специфические подклассы, которые должны расширять общие классы.

Вы будете использовать интерфейс, когда вы хотите гарантировать поведение несвязанные классов.

С помощью интерфейсов вы также можете использовать дополнительное наследование, если у вас уже есть расширение класса и вы уже использовали ваше основное наследование.

Конец ознакомительного фрагмента.

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я