Differenza tra ereditarietà e interfaccia in Java

Sommario:

Differenza tra ereditarietà e interfaccia in Java
Differenza tra ereditarietà e interfaccia in Java

Video: Differenza tra ereditarietà e interfaccia in Java

Video: Differenza tra ereditarietà e interfaccia in Java
Video: Interfacce - JAVA TUTORIAL ITALIANO 35 2024, Novembre
Anonim

Differenza chiave – Ereditarietà vs interfaccia in Java

Java è un linguaggio di programmazione sviluppato da Sun Microsystems. Java può essere utilizzato per sviluppare diverse applicazioni. È un linguaggio multi-paradigma che supporta la programmazione orientata agli oggetti, strutturata ecc. Il vantaggio principale di Java è che supporta la programmazione orientata agli oggetti (OOP). Il programmatore può creare classi e oggetti. Ci sono quattro pilastri in OOP. Sono eredità, polimorfismo, astrazione e incapsulamento. L'ereditarietà e le interfacce sono correlate all'OOP. Il differenza fondamentale tra ereditarietà e interfaccia è quello l'ereditarietà consiste nel derivare nuove classi da classi esistenti e un'interfaccia consiste nell'implementare classi astratte e l'ereditarietà multipla.

Cos'è l'ereditarietà in Java?

L'ereditarietà può ottenere la riutilizzabilità del codice. L'ereditarietà aiuta a riutilizzare gli attributi ei metodi di una classe esistente. Il meccanismo per derivare una nuova classe usando la vecchia classe è chiamato ereditarietà. La vecchia classe è nota come classe genitore o superclasse. La classe derivata è chiamata classe figlia o sottoclasse.

La sintassi dell'ereditarietà Java è la seguente.

class subclass_name estende superclass_name {

dichiarazione di variabili;

dichiarazione del metodo;

}

Il concetto di ereditarietà può essere spiegato usando il seguente esempio. Supponiamo che ci sia una classe chiamata A come segue.

classe pubblica A{

somma vuota pubblica(){

System.out.println("Somma");

}

}

Se vogliamo aggiungere un nuovo metodo senza cambiare la classe esistente, possiamo farlo come segue.

classe pubblica B{

vuoto pubblico sub(){

System.out.println("Sub");

}

}

Il programmatore può utilizzare l'ereditarietà per utilizzare la classe A sum().

la classe pubblica B estende la classe A{

vuoto pubblico sub(){

System.out.println("Sub");

}

}

Nella funzione principale, è possibile creare un oggetto di B e chiamare sub(), che appartiene alla classe B e sum(), che appartiene alla classe A usando l'ereditarietà.

public static void main(String args){

B obj=nuovo B();

obj.sub();

obj.sum();

}

Ci sono diversi tipi di eredità. Si tratta di eredità singola, eredità multipla, eredità multilivello ed eredità gerarchica. Nell'ereditarietà singola, esiste una classe base e una classe derivata. Nell'ereditarietà multilivello, ci sono tre classi, vale a dire, classe base, classe intermedia e classe derivata. La classe intermedia eredita dalla classe base e la classe derivata eredita dalla classe intermedia. Nell'ereditarietà gerarchica, esiste una classe base e molte classi derivate. Esiste un tipo speciale noto come ereditarietà ibrida. È una combinazione di due o più tipi di eredità.

Differenza tra ereditarietà e interfaccia in Java
Differenza tra ereditarietà e interfaccia in Java

Figura 01: Ereditarietà

Nell'ereditarietà multipla ci sono molte classi base e una classe derivata. Supponiamo che le classi A e B siano le classi base. La classe C è la classe derivata. Se entrambe le classi A e B hanno lo stesso metodo e il programmatore chiama quel metodo dalla classe derivata, si verificherà un problema di ambiguità. L'ereditarietà di due classi può causare un errore in fase di compilazione. Pertanto, l'ereditarietà multipla non è supportata in Java. Un'interfaccia può essere utilizzata per superare questo problema.

Cos'è l'interfaccia in Java?

L'astrazione è un processo per nascondere i dettagli di implementazione e visualizzare solo le funzionalità all'utente. L'astrazione può essere ottenuta utilizzando Classi astratte o Interfacce. Un metodo astratto è un metodo senza un'implementazione. Una classe con almeno un metodo astratto è una classe astratta. Esempio di una classe astratta è il seguente.

classe astratta A{

abstract void sum();

}

Supponiamo che ci siano due classi astratte come A e B. Per implementare metodi astratti di A e B, viene creata una nuova classe C. Quindi la classe C dovrebbe estendere sia A che B., ma l'ereditarietà multipla non è supportata in Java. Pertanto, dovrebbe utilizzare le interfacce. Le interfacce possono essere utilizzate per dichiarare metodi, ma non è possibile definire metodi. Non è possibile creare un oggetto utilizzando le interfacce. La classe C dovrebbe implementare tutti i metodi nell'interfaccia A e B.

interfaccia A{

somma nulla();

}

interfaccia B{

void sub();

}

la classe C implementa A, B{

somma vuota pubblica(){

System.out.println("Somma");

}

vuoto pubblico sub(){

System.out.println("Sottrazione");

}

}

Ora, nel programma principale è possibile creare un oggetto di C e chiamare entrambi i metodi.

public static void main (String args) {

C obj=nuovo C();

obj.sum();

obj.sub();

}

Quindi, le interfacce possono essere utilizzate per implementare l'ereditarietà multipla.

Un altro uso delle interfacce è che fornisce sicurezza. Fare riferimento al codice seguente.

interfaccia LA {

somma nulla ();

}

la classe B implementa LA {

somma vuota pubblica () {

System.out.println("Somma");

}

vuoto pubblico moltiplicato () {

System.out.println("Moltiplicazione");

}

}

Quando si crea un oggetto di B, è possibile chiamare entrambi i metodi sum() e multiply(). Se il programmatore vuole limitare usando la funzione moltiplica (), è possibile come segue.

public static void main(String args){

A obj=new B();

obj.sum();

}

A obj=new B(); creerà un oggetto. È di tipo A e la memoria è allocata come B. È possibile chiamare sum() ma non eseguire multiply(). Questa restrizione viene eseguita utilizzando le interfacce.

Quali sono le somiglianze tra ereditarietà e interfaccia in Java?

  • Entrambi i concetti sono correlati alla programmazione orientata agli oggetti
  • Entrambi rappresentano una relazione IS-A.

Qual è la differenza tra ereditarietà e interfaccia in Java?

Ereditarietà vs interfaccia in Java

L'ereditarietà è un concetto OOP per derivare nuove classi dalle classi esistenti. L'interfaccia è un meccanismo in OOP per implementare l'astrazione e l'ereditarietà multipla.
Utilizzo
L'ereditarietà fornisce il riutilizzo del codice. Le interfacce forniscono astrazione ed eredità multipla.

Riepilogo – Ereditarietà vs interfaccia in Java

Java è un linguaggio di programmazione multiparadigma che supporta la programmazione orientata agli oggetti. L'ereditarietà e le interfacce sono legate alla programmazione orientata agli oggetti. La differenza tra l'ereditarietà e l'interfaccia è che l'ereditarietà consiste nel derivare nuove classi da classi esistenti e le interfacce nell'implementare classi astratte e l'ereditarietà multipla.

Scarica la versione PDF di Ereditarietà vs interfaccia in Java

Puoi scaricare la versione PDF di questo articolo e usarla per scopi offline come da nota di citazione. Si prega di scaricare la versione PDF qui Differenza tra ereditarietà e interfaccia in Java

Consigliato: