Salta ai contenuti

Interfacce

Un’interfaccia descrive un comportamento che una classe promette di avere.

Non dice necessariamente come farlo. Dice quali metodi devono esistere.

Pensala come un contratto:

“se una classe implementa questa interfaccia, allora deve offrire questi metodi”.

public interface Stampabile {
void stampa();
}

Questa interfaccia richiede un metodo stampa.

Una classe che la implementa deve scrivere quel metodo.

public class Documento implements Stampabile {
private String titolo;
public Documento(String titolo) {
this.titolo = titolo;
}
@Override
public void stampa() {
System.out.println("Documento: " + titolo);
}
}

implements Stampabile significa: Documento rispetta il contratto Stampabile.

public class Foto implements Stampabile {
private String nomeFile;
public Foto(String nomeFile) {
this.nomeFile = nomeFile;
}
@Override
public void stampa() {
System.out.println("Foto: " + nomeFile);
}
}

Documento e Foto sono classi diverse, ma entrambe sanno stampare.

Puoi usare l’interfaccia come tipo.

public class Esempio {
public static void main(String[] args) {
Stampabile a = new Documento("Contratto");
Stampabile b = new Foto("vacanza.jpg");
a.stampa();
b.stampa();
}
}

Output:

Documento: Contratto
Foto: vacanza.jpg

Il programma non ha bisogno di sapere tutti i dettagli interni. Gli basta sapere che entrambi sono Stampabile.

Le interfacce aiutano a scrivere codice flessibile.

Puoi dire: “mi serve qualcosa che sappia fare questa azione”, senza fissarti su una classe specifica.

Esempio:

public static void stampaOggetto(Stampabile oggetto) {
oggetto.stampa();
}

Questo metodo funziona con qualunque classe che implementa Stampabile.

Una classe Java puo estendere una sola classe:

public class Studente extends Persona {
}

Ma puo implementare piu interfacce:

public class Documento implements Stampabile, Salvabile {
}

Questo rende le interfacce molto utili per descrivere comportamenti comuni.

Usa un’interfaccia quando classi diverse devono condividere lo stesso comportamento, anche se non appartengono alla stessa famiglia.

Documento e Foto non sono la stessa cosa. Pero entrambe possono essere stampabili.