Если его можно заменить просто классом
Вижу плюс что его нельзя создать как объект и обмануть программу
Если кто-нибудь ответил доступно был бы очень признателен
Сергей
66 уровень
Не пойму зачем нужен Абстрактный класс
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
22 февраля 2022, 10:41
А зачем чертеж, когда можно просто построить дом?
Мы ведь в чертеже не укроемся от дождя, в нем зимой не будет тепло.
Строили бы сразу дом, без чертежей.
Это на вопрос, зачем абстрактные сущности, которые даже экземпляр класса сделать нельзя.
Поэтому и нельзя, чтобы обозначить то, что это лишь чертеж, заготовка для классов.
Более точный аналог абстрактного класса - это заготовка под пиццу или торт.
Ее функциональное предназначение быть базовым составным компонентом ряда однородных сущностей: пицца с грибами, пицца с кальмаром, пицца с улитками и тд.
Обычный класс который возможно инстанциировать, смысла нету делать, поскольку нету смысла в существовании отдельного полуфабриката для пиццы. Полуфабрикат/заготовка/основа для пиццы != пицца.
Поэтому есть ограничение, нельзя создать экземпляр абстрактного класса, поскольку в этом нет никакого смысла с точки зрения логики.
И с точки зрения синтаксиса, поскольку абстрактный класс может содержать абстрактные методы, то его нельзя создавать экземпляр, иначе создашь экземпляр , вызовешь метод, а там реализации нет, что тогда JVM делать?
Абстрактные классы задают иерархию.
Иногда можно и обычные классы для задачи иерархии делать...это зависит от логики.
Например есть архи старый котик, он реальный кот, будет обычный класс ArchCat, и у него 5 потомков, и они будут его наследовать. И у них будут потомки, и они будут наследовать и так формируется цепочка иерархии.
Зачем нам абстрактный класс, мы наследуемся от конкретного живого кота.
Но есть множество других кейсов.
Например иерархия Котячие:
Домашник Кот, Тигр
Мурка, Васька, Шерхан.
Родительский класс, Котячие имеет смысл делать абстратным. Какой смысл в существовании экземпляра этого класса? "Котячие" могут быть конкретным котом? Нет, это абстракция.
Абстрактные классы просто будут содержать общую логику для потомков и задавать интерфейс взаимодействия с членами такой иерархии, перечень методов, реализация которого будет уже отдельно у каждого потомка.
0
Сергеев ВикторMaster
21 февраля 2022, 20:21
можно.
Но суть как раз в этом делении, что можно создать а что нельзя.
На дефолтных примерах:
нельзя создать млекопитающее, потому что это просто набор характеристик. Вот медведя уже можно создать )
+1
Павел
21 февраля 2022, 10:23
Если понятно зачем нужны интерфейсы, то можно с этой стороны посмотреть:
Различия между абстрактными классами и интерфейсами в Java
+1
Di Ma Java Developer в Сбер
21 февраля 2022, 08:51
Паттерный проектирования и ООП почитай, может яснее станет зачем нужна абстракция
0