Salta ai contenuti
Manuale LogoManuale Logo

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.