Le interfacce in java

Cos'è un'interfaccia in Java

Un'interfaccia è un insieme di nomi di metodi astratti che possono essere implementati su più classi.

Ogni classe che implementa l'interfaccia definisce i metodi in modo diverso dalle altre classi che implementano la stessa interfaccia.

Nota. Le interfacce non posso usarle per creare oggetti. Sono classi astratte con metodi senza corpo. Inoltre non possono contenere costruttori.

A cosa servono le interfacce?

Il linguaggio Java usa l'ereditarietà singola.

Questo vuol dire che una classe ha sempre una sola superclasse da cui eredita variabili, proprietà e metodi.

Nota. In altri linguaggi OOP (orientati agli oggetti) a ereditarietà multipla, invece, una classe può avere più superclassi.

L'ereditarietà singola è più semplice da gestire ma comporta dei limiti.

Per superare questi limiti, in Java sono state introdotte le interfacce.

Come creare un interfaccia

Per definire un'interfaccia

public interface nomeinterfaccia {

}

Un'interfaccia può eventualmente ereditare i metodi da un'altra interfaccia tramite la parola chiave extends.

public interface nomeinterfaccia extends interfacciamadre {

}

Come implementare un'interfaccia in una classe

Quando creo la classe aggiungo la clausola implements seguita dal nome dell'interfaccia

public class nome implements interfaccia {

}

Se le interfacce da implementare nella classe sono due o più sono dette interfacce multiple.

Devo elencarle una dopo l'altra separandole tra loro con una virgola

public class nome implements interfaccia1, interfaccia2 {

}

Un esempio pratico

Creo un'interfaccia (Animale) con un metodo (verso).

interface Animale {
public void verso();
}

Poi implemento l'interfaccia in una classe (Gatto) e definisco il metodo verso.

class Gatto implements Animale {
public void verso() {
System.out.println("miao");
}
}

Infine nella classe principale creo un oggetto (myCat) con la classe Gatto

class MyMainClass {
public static void main(String[] args) {
Gatto myCat = new Gatto();
myCat.verso();
}

}

Il metodo myCat.verso() restituisce la stringa "miao".

Esempio 2

Allo stesso modo posso implementare l'interfaccia Animale nella classe Cane.

class Cane implements Animale {
public void verso() {
System.out.println("bau");
}
}

Poi creo un oggetto myDog usando la classe Cane.

class MyMainClass {
public static void main(String[] args) {
Gatto myCat = new Gatto();
myCat.verso();
Cane myDog = new Cane();
myDog.verso();

}
}

Il metodo myDog.verso restituisce "bau".

E così via.


 
Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Le classi in Java