Estendere le Interfacce in Java

Concetti Chiave
  • Le interfacce in Java possono essere estese per ereditare metodi da altre interfacce.
  • Questo permette una maggiore modularità e riutilizzo del codice, poiché le classi che implementano l'interfaccia estesa devono fornire implementazioni per tutti i metodi richiesti dalla catena di ereditarietà dell'interfaccia.

Le interfacce possono essere estese

Un'interfaccia può ereditare un'altra utilizzando la parola chiave extends.

La sintassi è la stessa usata per ereditare le classi. Quando una classe implementa un'interfaccia che eredita un'altra interfaccia, deve fornire implementazioni per tutti i metodi richiesti dalla catena di ereditarietà dell'interfaccia.

Di seguito un esempio:

// Un'interfaccia può estenderne un'altra.
interface A {
    void metodo1();
    void metodo2();
}

// B ora include metodo1() e metodo2() -- aggiunge metodo3().
interface B extends A {
    void metodo3();
}
// Questa classe deve implementare tutti i metodi di A e B
class MiaClasse implements B {
    public void metodo1() {
        System.out.println("Implementare metodo1().");
    }

    public void metodo2() {
        System.out.println("Implementare metodo2().");
    }

    public void metodo3() {
        System.out.println("Implementare metodo3().");
    }
}

class IFEstende {
    public static void main(String[] args) {
        MiaClasse oggetto = new MiaClasse();

        oggetto.metodo1();
        oggetto.metodo2();
        oggetto.metodo3();
    }
}
Nota

Attenzione alla completezza dell'implementazione

Come esperimento, si può provare a rimuovere l'implementazione di metodo1() in MiaClasse. Questo causerà un errore di compilazione.

Come detto in precedenza, ogni classe che implementa un'interfaccia deve implementare tutti i metodi richiesti da quell'interfaccia, inclusi quelli ereditati da altre interfacce.