Если цель состоит в том, чтобы создать базовый класс, который будут расширять другие классы, имеет смысл сделать его абстрактным классом.
Если, однако, цель состоит в том, чтобы создать некоторую форму класса Utility -тот, который имеет только static
членов - лучший способ справиться с этим - дать классу один конструктор, помеченный private
.Таким образом, класс не может быть ни создан, ни помещен в подкласс.Это посылает четкий сигнал о том, что единственным использованием класса является использование его static
методов.(Это совет от Джоша Блоха Effective Java )