9. Interfacce
In Java una classe può estendere solo una classe, non più di una.
Per questo sono state create le interfacce, che possono implementare più interfacce contemporaneamente.
Definizione
Un’interfaccia è come una classe, ma al suo interno gli unici attributi presenti possono essere costanti e tutti i metodi sono public
e abstract
.
Gli attributi dichiarati in un’interfaccia sono visibili in tutte le classi che la implementano e sono immutabili (static final
).
public interface Scalable{
int SMALL = 0, MEDIUM = 1, BIG = 2; // Costanti static e final
void setScale(int size);
}
Ereditarietà delle interfacce
Un’interfaccia può essere erede di una o più interfacce contemporaneamente: la sintassi è la seguente.
interface <name> extends <name1>, <name2>, ... {}
Gerarchia di ereditarietà
Una classe può implementare quante interfacce vuole, ma può estendere al massimo una sola classe.
Se la classe non è astratta, allora essa deve fornire un’implementazione a TUTTI i metodi che implementa dall’interfaccia, sennò la classe deve essere astratta.
Ex.
public interface Shape{
public void draw();
}
public class Circle implements Shape{
public void draw(){
System.out.println("Sto disegnando un cerchio");
}
}
public class Main{
public static void main(String args[]) {
Shape circleshape = new Circle();
circleshape.draw();
}
}
Metodi statici di un’interfaccia
A partire da Java 8, è possibile definire ed implementare in un’interfaccia metodi static
.