LE INTERFACE IN JAVA

INTRODUZIONE

java-logo

Introduciamo le interface nell’ambito della programmazione OOP. All’inizio del corso, uno degli aspetti su cui ci siamo soffermati è quello dell’interfaccia pubblica. Uno dei principi basilari con cui dobbiamo progettare le nostre classi è quello dell’incapsulamento. In particolare, si devono rendere gli attributi privati, così come i metodi usati solo dalla classe ed esporre all’esterno le funzionalità minime per chi utilizzerà la nostra classe.

Interface

CLASSI ASTRATTE

Spesso si possono individuare una serie di responsabilità, definite in modo generale, ad esempio, con una classe astratta, e implementate concretamente all’interno di una  serie di classi differenti.

Classi astratte

Questo rappresentato in figura è già un buon punto di partenza; tuttavia, a volte vi è la necessità di individuare e rappresentare una serie di responsabilità che in realtà sono trasversali rispetto ad una singola gerarchia di generalizzazione, cioè noi vorremmo poter definire un insieme di metodi che rappresentano un concetto ben definito. Qui entrano in gioco le interface, simili alle classi astratte in quanto contengono solo la definizione di un insieme di metodi, che dovranno poi essere implementati, indipendentemente dalla generalizzazione in tutte le classi che implementano la nostra interface.

Le interface

Una classe può estendere una sola superclasse ma può implementare tutte le interface che vuole, ridefinendo i metodi definiti nelle interfacce.

Multiple interface

DICHIARAZIONE DI UNA INTERFACE

Vediamo come si dichiara una interface in Java.

Dichiarazione

Dobbiamo inserire la interface in un package con il file avente lo stesso nome della interface ed estensione .java. Possiamo anche omettere il modificatore public, in tal caso l’interfaccia è visibile solo a livello di package. Esiste una convenzione che stabilisce che i nomi delle interface dovrebbero iniziare con una i maiuscola. Nella maggior parte dei casi una interfaccia ha un body che dichiara una serie di metodi senza però darne una implementazione.

Body

L’implementazione di tutti i metodi è demandata alle classi che implementeranno questa interface. Tutti i metodi nelle interface sono public, quindi non accorre specificare il modificatore di accesso. Possiamo anche eccezionalmente definire delle costanti all’interno delle interface, e queste avranno automaticamente associato il modificatore public final static. Sono costanti, quindi, occorre inizializzarle e usare la convenzione delle lettere maiuscole.

Costanti

IMPLEMENTAZIONE DELLE INTERFACE

Una classe che implementa una o più interface può anche avere una superclasse.

Implementazione

Vediamo un esempio.

Esempio di implementazione

AClass è conforme alla interfaccia in quanto implementa l’unico metodo definito nella stessa interface. Vediamo la classe di test. In giallo è evidenziato uno degli aspetti più importanti nell’utilizzo delle interface.

Classe di test

Possiamo dichiarare una variabile di un certo tipo di interface, proprio come facciamo con le classi, e la possiamo inizializzare con una classe a patto che questa classe la implementi. Ovviamente viene richiamato il metodo definito nella classe.

Chiamata al metodo di classe

Volendo possiamo usare anche quest’altra sintassi.

Metodo alternativo

LINK AI POST PRECEDENTI

IL LINGUAGGIO JAVA

LINK AL CODICE SU GITHUB

GITHUB

ESECUZIONE DEL CODICE DI ESEMPIO

  • Scaricare il codice da GITHUB, lanciare il file JAR con il seguente comando in Visual Studio Code, posizionandosi nella directory contenente il JAR.

        java -jar –enable-preview CorsoJava.jar

  • Oppure mettere in esecuzione il main che si trova nel file CorsoJava.java.