Невозможно создать объект, напрямую вызвав конструктор класса abstract. Конструктор класса abstract может быть вызван только из производного класса. Поэтому мне кажется, что конструкторы абстрактного класса должны быть либо protected, либо private-package (последнее для необычных случаев ограничения использования конструктора для производных классов внутри пакета). Однако Java позволяет конструктору класса abstract быть public.
Есть ли какие-либо обстоятельства, в которых полезно объявить конструктор класса abstract public, а не protected или package-private?
Это не совсем дубликат вопроса "Абстрактный модификатор доступа к конструктору классов: вы можете объявить конструктор public; Я хочу знать, есть ли веские причины для этого. Мне кажется, что нет. Я вижу, что С# имеет схожую особенность.