Тимур Машнин

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


Скачать книгу

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

      Публичный член класса виден везде без ограничений.

      Защищенный член класса, protected, виден в пределах своего пакета, а также подклассом класса, даже если подкласс принадлежит другому пакету.

      Если нет никакого ключевого слова, член класса виден только в пределах своего пакета.

      И приватный член класса виден только в пределах своего класса.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      С помощью