Interfacce
Le interfacce in java ( e in generale nei linguaggi OOP), sono entità simili a classi, ma i metodi non hanno corpo. Servono a dare dei comportamenti standard a tutte le sottoclassi. Vengono definite tramite l’uso della parola interface al posto della keyword class, nella creazione di una classe.
Come concetto è molto simile ad extends, ma una sottoclasse in java può estendere soltanto un’unica superclasse, mentre una classe può implementare infinite interfaccie (ereditarietà multipla).
E’necessario implementare TUTTI i metodi delle interfacce. Se così non fosse, il compilatore ci darebbe un errore.
Esempio:
public interface Animale { public void emettiVerso(); }
Per implementare una interfaccia in java, si usa la parola chiave implements:
Esempio:
public class Cavallo implements Animale { @Override public void emettiVerso() { System.out.println("NITRITO"); // TODO Auto-generated method stub } }
Per implementare più interfaccie, è sufficiente separarle con una virgola:
public class Cavallo implements Animale, AltraInter, AltraAncora
Ricordarsi delle seguenti regole per le interfacce in java:
- Possiamo dichiarare una variabile indicando come tipo un’interfaccia
- Non possiamo istanziare un’interfaccia
- Ad una variabile di tipo interfaccia possiamo assegnare solo istanze di classi che implementano l’interfaccia
- Su di una variabile di tipo interfaccia possiamo invocare solo metodi dichiarati nell’interfaccia (o nelle sue “super-interfacce” (interfaccia da cui è estesa)).
Si noti che:
- Le variabili, anche se non sono dichiarate final di fatto sono delle costanti;
- Non ha metodi con corpo;
Esempio
abstract class Animale{ } interface Felino{ } public class Leone extends Animale implements Felino { }
Notare che se non esistessero le interfacce, non potrei dotare la classe Leone delle caratteristiche di Felino, perche essa estende già una classe (Animale)