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