Cos'è l'interfaccia in Java?
Un'interfaccia nella programmazione Java è definita come un tipo astratto utilizzato per specificare il comportamento di una classe. Un'interfaccia Java contiene costanti statiche e metodi astratti. Una classe può implementare più interfacce. In Java, le interfacce vengono dichiarate utilizzando la parola chiave interface. Tutti i metodi nell'interfaccia sono implicitamente pubblici e astratti.
Sintassi per la dichiarazione dell'interfaccia
interface {//methods}
Per utilizzare un'interfaccia nella tua classe, aggiungi la parola chiave "implements" dopo il nome della tua classe seguita dal nome dell'interfaccia.
Esempio per l'implementazione dell'interfaccia
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
Fare clic qui se il video non è accessibile
Perché è necessaria un'interfaccia?
Per comprendere meglio il concetto di Java Interface, vediamo un esempio. La classe "Media Player" ha due sottoclassi: lettore CD e lettore DVD. Ognuno ha il suo metodo di implementazione unico per riprodurre musica.
Un'altra classe "Combo drive" eredita sia CD che DVD (vedi immagine sotto). Quale metodo di gioco dovrebbe ereditare? Ciò potrebbe causare seri problemi di progettazione. E quindi, Java non consente l'ereditarietà multipla.
Ora prendiamo un altro esempio di Dog.
Supponi di avere un requisito in cui la classe "cane" eredita la classe "animale" e "Animale domestico" (vedi immagine sotto). Ma non puoi estendere due classi in Java. Allora cosa faresti? La soluzione è Interface.
Il regolamento dell'interfaccia dice:
- Un'interfaccia è una classe astratta al 100% e ha solo metodi astratti.
- La classe può implementare un numero qualsiasi di interfacce.
Class Dog può estendersi alla classe "Animal" e implementare l'interfaccia come "Pet".
Esempio di interfaccia Java:
Passaggio 1) Copia il seguente codice in un editor.
interface Pet {public void test ();}class Dog implements Pet {public void test () {System.out.println ("Metodo di interfaccia implementato");}public static void main (String args []) {Pet p = nuovo cane ();p.test ();}}
Passaggio 2) Salva, compila ed esegui il codice. Osserva l'output.
Differenza tra classe e interfaccia
Classe | Interfaccia |
---|---|
In classe, puoi istanziare una variabile e creare un oggetto. | In un'interfaccia, non è possibile creare un'istanza di variabile e creare un oggetto. |
La classe può contenere metodi concreti (con implementazione) | L'interfaccia non può contenere metodi concreti (con implementazione) |
Gli specificatori di accesso utilizzati con le classi sono privati, protetti e pubblici. |
In Interface viene utilizzato un solo specificatore: Public. |
Quando utilizzare l'interfaccia e la classe astratta?
- Utilizzare una classe astratta quando è necessario definire un modello per un gruppo di sottoclassi
- Utilizzare un'interfaccia quando è necessario definire un ruolo per altre classi, indipendentemente dall'albero di ereditarietà di queste classi
Deve conoscere fatti sull'interfaccia
- Una classe Java può implementare più interfacce Java. È necessario che la classe debba implementare tutti i metodi dichiarati nelle interfacce.
- La classe dovrebbe sovrascrivere tutti i metodi astratti dichiarati nell'interfaccia
- L'interfaccia consente di inviare un messaggio a un oggetto senza preoccuparsi di quali classi appartenga.
- La classe deve fornire funzionalità per i metodi dichiarati nell'interfaccia.
- Tutti i metodi in un'interfaccia sono implicitamente pubblici e astratti
- Non è possibile creare un'istanza di un'interfaccia
- Un riferimento all'interfaccia può puntare agli oggetti delle sue classi di implementazione
- Un'interfaccia può estendersi da una o più interfacce. La classe può estendere solo una classe ma implementare un numero qualsiasi di interfacce
- Un'interfaccia non può implementare un'altra interfaccia. Se necessario, deve estendere un'altra interfaccia.
- Un'interfaccia dichiarata all'interno di un'altra interfaccia viene definita interfaccia nidificata
- Al momento della dichiarazione, la variabile di interfaccia deve essere inizializzata. In caso contrario, il compilatore genererà un errore.
- La classe non può implementare due interfacce in java che hanno metodi con lo stesso nome ma diverso tipo di ritorno.
Riepilogo :
- La classe che implementa l'interfaccia deve fornire funzionalità per i metodi dichiarati nell'interfaccia
- Tutti i metodi in un'interfaccia sono implicitamente pubblici e astratti
- Non è possibile creare un'istanza di un'interfaccia
- Un riferimento all'interfaccia può puntare agli oggetti delle sue classi di implementazione
- Un'interfaccia può estendersi da una o più interfacce. Una classe può estendere solo una classe ma implementare un numero qualsiasi di interfacce