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: CHE COSA E' UN'INTERFACCIA - Java | PROGRAMMAZIONE #15 | Vita Da Founder 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 varie applicazioni. È un linguaggio multi-paradigma che supporta la programmazione orientata agli oggetti, 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 a OOP. La differenza fondamentale tra ereditarietà e interfaccia è che l'ereditarietà consiste nel derivare nuove classi da classi esistenti e un'interfaccia consiste nell'implementare classi astratte ed ereditarietà multipla.

CONTENUTI

1. Panoramica e differenza fondamentale

2. Cos'è l'ereditarietà in Java

3. Cos'è l'interfaccia in Java

4. Somiglianze tra ereditarietà e interfaccia in Java

5. Confronto affiancato - Ereditarietà vs interfaccia in Java in forma tabulare

6. Riepilogo

Cos'è l'ereditarietà in Java?

L'ereditarietà può ottenere la riusabilità del codice. L'ereditarietà aiuta a riutilizzare gli attributi e i 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 super classe. La classe derivata è chiamata classe figlio o sottoclasse.

La sintassi dell'ereditarietà Java è la seguente.

class nome_sottoclasse estende nome_superclasse {

dichiarazione di variabile;

dichiarazione del metodo;

}

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

public class A {

public void sum () {

System.out.println ("Sum");

}

}

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

public class B {

public void sub () {

System.out.println ("Sub");

}

}

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

public class B estende la classe A {

public void sub () {

System.out.println ("Sub");

}

}

Nella funzione main è 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 ();

}

Esistono diversi tipi di eredità. Sono ereditarietà singola, eredità multipla, ereditarietà multilivello ed eredità gerarchica. Nell'ereditarietà singola, c'è una classe base e una classe derivata. Nell'ereditarietà multilivello, ci sono tre classi: 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, c'è 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, causerà 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. È possibile utilizzare un'interfaccia per superare questo problema.

Cos'è l'interfaccia in Java?

L'astrazione è un processo per nascondere i dettagli dell'implementazione e mostrare all'utente solo le funzionalità. 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. L'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 {

void sum ();

}

interfaccia B {

void sub ();

}

la classe C implementa A, B {

public void sum () {

System.out.println ("Sommatoria");

}

public void 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 A {

void sum ();

}

la classe B implementa A {

public void sum () {

System.out.println ("Sommatoria");

}

public void multiply () {

System.out.println ("Moltiplicazione");

}

}

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

public static void main (String args) {

A obj = nuovo B ();

obj.sum ();

}

A obj = nuovo 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 la relazione IS-A.

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

Articolo diff. Al centro prima della tabella

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 la riusabilità del codice. Le interfacce forniscono astrazione ed ereditarietà multipla.

Riepilogo: ereditarietà vs interfaccia in Java

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

Scarica la versione PDF di Ereditarietà vs Interfaccia in Java

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

Raccomandato: