Почему класс должен быть абстрактным, если у него есть хотя бы один абстрактный метод?

По какой причине я не могу создать конкретный класс с абстрактными методами в нем?

Это принудительно только для того, чтобы убедиться, что ни один объект не создан без определения абстрактного метода? или есть другая вероятная причина этого ограничения?

4 ответа

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

Потому что когда вы создаете абстрактный класс, вы находитесь в середине уровня абстракций. Я имею в виду, что у вас есть несколько вопросов об обязанностях класса, или этот класс должен что-то делать, но им все равно, как, частично. Если вы не хотите иметь реализованный метод, вы должны создать интерфейс. По моему мнению, ответ заключается в классе обязанностей и абстракции, а не в сфере технологий.

abstract класс в Java-контестексе определяется как класс имеет по крайней мере один abstract метод. А абстрактный метод - это просто не реализованный метод. Это дизайнерское решение, которое было только что скопировано из C++, где оно точно такое же. Разница лишь в том, что в C++ вам не нужно сообщать компилятору, что класс является абстрактным, компилятор знает это даже без вашего ведома. Почему это дизайнерское решение было принято в C++, я не могу вам сказать, но наличие его устраняет полный класс ошибок. Ошибка, которую вызывает метод класса, вызванный, когда метод не реализован в этом подклассе.

Вы правы, причина в том, чтобы предотвратить создание объекта без реализации метода или более.

Другие вопросы по тегам