В Java, если вы создаете экземпляр Child Class
, Parent Class
экземпляр создается неявно. Конструктор дочернего класса должен быть видимым до Child Class
, поскольку он вызывает конструктор конструктора Parent Class
, используя super()
в самом первом утверждении.
Так что, если вы измените конструктор Parent Class
к private
, Child Class
не мог получить доступ к нему и не может создать любой экземпляр самостоятельно, так компилятор на первой руке просто не позволяет этого вообще.
Но если вы хотите private
конструктор по умолчанию в Parent Class
, то вам необходимо явно создать перегруженную public
конструктора в Parent Class
& затем в Child class
конструкторе вам нужно вызвать с помощью super(param)
общественности перегруженного конструктора Parent Class
.
Кроме того, вы можете подумать, что использовать private
конструкторы. private
конструкторы в основном используются, когда вы не хотите, чтобы другие из любого внешнего класса вызывали new()
на ваш класс. Таким образом, в этом случае мы предоставляем некоторый метод getter()
для предоставления класса object
. В этом методе вы можете создать/использовать существующий объект своего класса &, чтобы вернуть его из этого метода.
Например. Calendar cal = Calendar.getInstance();
. Это фактически составляет основу шаблона проектирования Singleton
.
(Ответ на ваш последний вопрос: «да», если вы имеете в виду под «окончательным», что «он не может быть подклассифицирован». Он должен (вероятно, я думаю) не предполагать, однако, что компилятор также обнаружит это и обрабатывать класс А точно так же, как если бы он был явно объявлен «окончательным».) –
Возможный дубликат [Как разрешить] Неявный суперструктор classA() не отображается. Должен явно ссылаться на другой конструктор?? (Http://stackoverflow.com/questions/3904355/how-to-resolve-implicit-super-constructor-classa-is-not-visible-must-explici) – Raedwald