Абстрактные классы
Как выглядит животное?
- Уже успели ответить? На самом деле, ответа на этот вопрос нет, так как для ответа требуется уточнить, какое именно животное.
Получается, что понятие "животное" - абстрактное.
Как выглядит геометрическая фигура? - Уже успели ответить? Я думаю, что нет, ведь здесь то же требуется уточнение, о какой именно геометрической фигуре идёт речь. Получается, что понятие "геометрическая фигура" - абстрактное.
Примеров обстрактных понятий можно приводить много...
Язык программирования Java объектно-ориентированный, всё в этом языке либо класс, либо объект.
А придумана парадигма ООП была для того, что-бы программисты могли в коде описать реальные сущности.
Но как же быть с абстрактными понятиями?
- На этот случай, в Java придумали абстрактные классы. От них нельзя создать объект, зато от них можно наследоваться.
Абстрактные классы — это классы, которые не могут быть инстанцированы непосредственно и могут содержать абстрактные методы (методы без реализации) и обычные методы (с реализацией). Они служат основой для других классов, предоставляя общий интерфейс и функциональность для их расширения(наследования).
Чтобы объявить абстрактный класс, используйте ключевое слово abstract перед определением класса:
В файле Animal.java
Для создания конкретного класса, который будет наследовать абстрактный класс, необходимо реализовать все его абстрактные методы:
В файле Cat.java
В файле Dog.java
В файле Main.java
Зачем использовать абстрактные классы?
- Упрощение структуры кода: Позволяет создать общую базу, от которой будут наследоваться дочерние классы.
- Полиморфизм: - Позволяет обращаться к объектам разных классов через один интерфейс.
- Шаблонный метод: - Позволяет создавать шаблоны методов с частичной реализацией, оставляя детали подклассам.
Абстрактные классы являются мощным инструментом в Java для построения архитектуры программ, которая подчеркивает принципы наследования и полиморфизма, способствуя созданию более чистого и понятного кода.