Carmine2898 ha scritto:
1) Differenza tra annotazione e commento in Java?
I "commenti" sono principalmente solo per i programmatori che leggono il sorgente. A parte il caso dei "javadoc" comment che iniziano con /
** e che contengono la documentazione scritta nel formato appropriato per javadoc.
Le "annotazioni" (solo da Java 5 in poi) invece sono "metadati" agganciati specificatamente agli elementi del programma (classi, costruttori, metodi, field, ecc...). Ed hanno una politica di retention a 3 livelli per cui una annotation può stare solo nel sorgente, o
anche nel .class, o
anche disponibile a runtime.
Carmine2898 ha scritto:
2) "Ciascuna classe che non estende un'altra classe estende automaticamente la classe Object."
- E' estesa automaticamente in fase di compilazione?
Sì, una classe che non usa espressamente
extends X, estende
implicitamente Object. Questo lo "sa" e fa il compilatore.
Carmine2898 ha scritto:
3) Modificatori d'accesso per il costruttore?
Qualunque (uno solo ovviamente) dei 3 modificatori di accesso: public / protected / private
A parte le eventuali annotation, un costruttore non permette altri modificatori.
Carmine2898 ha scritto:
Trovo insensato fare un costruttore che non sia pubblico, non potrei istanziare un oggetto di quella classe in un'altra classe
Non solo è possibile e lecito avere un costruttore private ma questo è utile per certi tipi di design o per classi particolari.
Se una classe ha solo metodi statici di "utilità", NON ha senso istanziarla. E in tal caso tipicamente si mette un singolo costruttore private vuoto.
Inoltre serve anche per design particolari come nel pattern Singleton.
Carmine2898 ha scritto:
4) Firma del metodo
- Quando mi fu posta la domanda sulla firma del metodo risposi che era formata dal nome del metodo + tipi e numero di parametri
Mi dissero che dovevo fermarmi a "nome metodo + tipi", non trovo pace su questa cosa.
La signature (firma) di un metodo è data da: 1) nome e 2) parametri (chiaramente tipi/numero). Il tipo di ritorno di per sé NON è considerato come parte della signature.
Nel sorgente di 1 classe, due metodi NON possono differire solo per il tipo di ritorno.
Carmine2898 ha scritto:
public Persona(){} e public Persona(String nome){this.nome=nome;}
Infatti qui hai 2 costruttori in
overload.