Classi astratte, nidificate, anonime
Le classi astratte sono utilizzate per poter dichiarare caratteristiche comuni fra classi di una determinata gerarchia. Una classe astratta può contenere o meno metodi astratti, ma una classe che contiene metodi astratti deve necessariamente essere dichiarata come astratta.
public abstract classe Colli { private int peso;public int peso () { return this.peso } public abstract void metodo (); |
Lo scopo delle classi astratte è di gestire il comportamento di base delle classi che la derivano e che può essere ampliato e specializzato da queste ultime.
Si usano classi astratte per condividere codice fra più classi, se più classi hanno in comune metodi e compi o se si vogliono dichiarare metodi comuni che non siano necessariamente campi statici e final.
Si usano le interfacce se alcune classi si trovano a condividere i metodi di una interfaccia, se si vuole specificare il comportamento di un certo tipo di dato.
Un esempio di utilizzo di classe astratta è rappresentato dalla “AbstractMap“, tutte le sue sottoclassi hanno metodi in comune e che sonop definiti all’interno della classe AbstractMap.
Un esempio di una classe che implementa molte interfacce è rappresentato da “HashMap” che implementa le interfacce Serializable, Clonable eMap<K,V>.
In java esistono delle regole ma esistono tre importanti eccezioni:
- classi ed interfacce inner – classe definita all’interno di un’altra classe, se usiamo la keyword static la classe inner può essere considerata come una classe regolare mentre i membri possono anche essere statici mantenendo la classe inner. Le interfacce per definizione sono statiche quindi la keyword static è implicita;
- classi local – sono una variante degli inner, definite all’interno di blocchi di codice;
- classi anonymous – classi ed interfacce definite e istanziate all’interno di classi e metodi;