|
|
|
| Возник вопрос о необходимости объявлять класс именно как abstract.
Что дает нам abstract:
1. Запрещение создание экземпляра такого класса? но это можно сделать в обычном классе объявив конструктор с модификатором доступа private.
2. Возможность переопределять методы в дочерних классах (полиморфизм в действии)? в не абстрактном также можно.
3. Возможность объявлять абстрактные методы? это единственная причина, которую я вижу. Объявив абстрактный метод в базовом классе и не переопределив его в дочернем - даст нам фатальную ошибку времени выполнения.
Т.е. именно Абстрактный класс необходим в случае, когда мы хотим быть уверены, что некоторые методы (определенные как абстрактные) будут обязательно переопределены в дочерних классах.
Поправьте, если ошибаюсь | |
|
|