Все зависит от того, имеет ли смысл иметь экземпляры класса .
Предположим, у вас есть, например, один класс Dog
и один класс Cat
. Они оба простираются Animal
. Теперь Animal
может иметь имя и несколько методов, но не имеет смысла запускать Animal
s. Animal
- это ... хорошо абстрактное понятие.
В других обстоятельствах у вас могут быть подклассы (например, LinkedHashSet
расширяет HashSet
), но все еще имеет смысл создавать экземпляр суперкласса (в данном случае HashSet
).
Чтобы ответить на ваш комментарий: " Имеет ли смысл делать класс неабстрактным, даже если вы не хотите создавать его экземпляр. "
Хорошо, я бы сказал, что если вы сегодня просто не знаете ни одного варианта использования, в котором он должен быть создан, применяется то же правило: Имеет ли смысл (логически) иметь экземпляр класс? Если так, сделайте его неабстрактным.
Если ситуация больше похожа на " Если вы создали экземпляр этого класса, вы, вероятно, делаете это неправильно! ", тогда я бы прояснил это, сделав класс абстрактным.