Interfacce
-
Sono uno strumento che Java mette a disposizione per consentire a piĂą classi di fornire e implementare un insieme di metodi comuni
-
Definiscono e standardizzano l’interazione tra oggetti tramite un insieme limitato di operazioni
-
Esse specificano soltanto il comportamento che un certo oggetto deve presentare all’esterno, cioè cosa quell’oggetto può fare
-
L’implementazioe di tali operazioni, cioè come queste vengono tradotte e realizzate, rimane invece non definito
Metodi di default e metodi statici (java 8)
- E’ possibile specificare delle implementazioni di default di metodi non statici
- Mediante la parola chiave
default
- La motivazione principale per i metodi di default nelle interfacce è dovuta all’estensione di interfacce rilasciate in precedenza con i nuovi metodi senza rompere il contratto con il codice che utilizza le versioni precedenti
- Mediante la parola chiave
- E implementazioni di metodi statici
- I metodi statici non godono del polimorfismo
- Sono metodi di utilitĂ non associati alle singole istanze
Metodi privati
- Per facilitare il riuso del codice, da Java 9 è possibile definire metodi provati all’interno di un’interfaccia
public interface Loggabile
{
private void log(String msg, LogLevel level)
{
//codice per il logging
}
default void logInfo(String msg) {log(msg, LogLevel.INFO);}
default void logWarn(String msg) {log(msg, LogLevel.WARN);}
default void logError(String msg) {log(msg, LogLevel.ERROR);}
default void logFatal(String msg) {log(msg, LogLevel.FATAL);}
}
Dichiarazioni di un’interfaccia
-
Un’interfaccia è una classe che può contenere soltanto
- Costanti
- Metodi astratti
- Java 8: Implementazioni di default di metodi e metodi statici
- Java 9: metodi privati tipicamente da invocare in metodi di default
-
Tutti i metodi dichiarati in un’interfaccia sono implicitamente public abstract
-
Tutti i campi dichiarati in un’interfaccia sono implicitamente public static final
-
Tranne nel caso dei metodi di default o statici, non è possibile specificare alcun dettaglio implementativo
- Tranne nel caso dei metodi di default o statici, non è possibile specificare alcun dettaglio implementativo
- Le interfacce permettono di modellare comportamenti comuni a classi che no sono necessariamente in relazione gerarchica
L’interfaccia java.util.Iterator <E>
-
E’ un’interfaccia fondamentale che permette di iterare su collezioni
-
Espone tre metodi:
-
E’ in relazione con l’interfaccia
Iterable
nel senso che chi implementaIterable
restituisce unIterator
sull’oggetto-collezione