Salta ai contenuti
Manuale LogoManuale Logo

Interfacce

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

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 che 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 offrono lo stesso comportamento.

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 permettono di scrivere codice meno legato a una classe specifica.

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 può estendere una sola classe:

public class Studente extends Persona {
}

Ma può implementare più interfacce:

public class Documento implements Stampabile, Salvabile {
}

Questo le rende 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.