Полная версия
Объектно-ориентированное программирование на Java. Платформа Java SE
Также, с помощью звездочки, можно импортировать все остальные статические члены класса Math, не указывая их по одному.
Каким бы удобным ни был статический импорт, очень важно не злоупотреблять им, чтобы избежать конфликта имен, например, если вы определите в своем классе свой метод pow.
Теперь, когда мы узнали, что классы группируются в пакеты, и мы знаем, что методы и поля класса могут быть публичными и приватными, пора сказать, что методы и поля класса также могут быть защищенными, это ключевое слово protected, и приватными в пакете, это отсутствие всякого ключевого слова.
Публичный член класса виден везде без ограничений.
Защищенный член класса, protected, виден в пределах своего пакета, а также подклассом класса, даже если подкласс принадлежит другому пакету.
Если нет никакого ключевого слова, член класса виден только в пределах своего пакета.
И приватный член класса виден только в пределах своего класса.
Абстрактные классы vs Интерфейсы
Теперь давайте вернемся немного назад и рассмотрим наследование разных объектов.
Предположим у нас есть эта иерархия.
Вверху иерархии у вас есть что-то более общее, например, позвоночные, а затем, когда вы спускаетесь вниз, все становится более конкретным.
Таким образом, в самом низу у вас есть наиболее специфический уровень.
В некоторых деревьях наследования, поскольку все становится более общим, объекты как бы перестают восприниматься как реальные экземпляры.
Как что такое объект рыбы?
Существует много разных видов рыб, и это слишком общее, чтобы действительно существовало в природе.
Поэтому, для представления таких объектов и вводится понятие абстрактный.
Абстрактные методы – это определение метода в суперклассе, но они не имеют реальной реализации.
Это только заголовок метода.
Что это такое, так это контракт между суперклассом и подклассом.
Как суперкласс, я диктую, что должен реализовывать подкласс.
Чтобы сделать это, вы помещаете ключевое слово abstract и затем заголовок метода с типом возврата и параметрами.
Вам также не нужно устанавливать видимость метода – публичный он или приватный, потому что вы решите это в подклассе.
Как только у вас появятся абстрактные методы в определении класса, значит вы создали абстрактный класс.
Теперь, если у вас есть ключевое слово abstract где угодно, внутри этого класса, вы должны добавить слово abstract в заголовок класса.
Теперь, когда вы используете абстрактный класс и когда вы используете интерфейс?
В конечном счете, абстрактный класс – это просто обычный суперкласс, к которому вы добавляете некоторое поведение.
Это похоже на добавление интерфейса к существующему суперклассу.
Итак, вы используете абстрактный класс, когда вам нужно совместно использовать код и гарантировать поведение в близко связанных классах.
Так как абстрактный класс объявляет общую функциональность для семейства связанных классов.
Вы также используете абстрактный класс, если у вас есть специфические подклассы, которые должны расширять общие классы.
Вы будете использовать интерфейс, когда вы хотите гарантировать поведение несвязанные классов.
С помощью интерфейсов вы также можете использовать дополнительное наследование, если у вас уже есть расширение класса и вы уже использовали ваше основное наследование.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.