In Java, se si crea un'istanza di Child Class
, l'istanza Parent Class
viene creata in modo implicito. Quindi il costruttore della classe Figlio deve essere visibile a Child Class
poiché chiama il costruttore del costruttore Parent Class
utilizzando super()
nella prima istruzione stessa.
Quindi, se si cambia il costruttore della Parent Class
-private
, Child Class
non poteva accedervi e non poteva creare qualsiasi istanza di una propria, in modo compilatore alla prima mano proprio non permettere questo a tutti.
Ma se si vuole private
costruttore di default in Parent Class
, allora è necessario creare esplicitamente un sovraccarico public
costruttore nel Parent Class
& poi nel Child class
costruttore è necessario chiamare utilizzando super(param)
pubblico costruttore di sovraccarico di Parent Class
.
Inoltre, si potrebbe pensare a cosa servono i costruttori private
. I costruttori private
vengono utilizzati principalmente quando non si desidera che gli altri di qualsiasi classe esterna chiamino new()
sulla classe. In tal caso, forniamo il metodo getter()
per fornire la classe object
. In questo metodo è possibile creare/utilizzare l'oggetto esistente della classe & restituirlo da tale metodo.
Es. Calendar cal = Calendar.getInstance();
. Questo in realtà costituisce la base del modello di progettazione Singleton
.
fonte
2015-07-03 11:53:02
(La risposta alla tua domanda finale è "sì", a patto di "finale" che "non può essere sottoclasse". Dovrebbe (probabilmente, penso) non essere assunto tuttavia che il compilatore individuerà anche questo e tratta la classe A esattamente come se fosse stata dichiarata esplicitamente "finale".) –
possibile duplicato di [Come risolvere 'Implic super constructor classA() non è visibile. Deve esplicitamente invocare un altro costruttore '?] (Http://stackoverflow.com/questions/3904355/how-to-resolve-implicit-super-constructor-classa-is-not-visible-must-explici) – Raedwald