JavaProgrammazione

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;