Differenza tra ereditarietà e interfaccia in Java

Differenza chiave - Ereditarietà vs Interface 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 orientato agli oggetti, strutturato, 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 ereditarietà, polimorfismo, astrazione e incapsulamento. L'ereditarietà e le interfacce sono legate a OOP. Il differenza fondamentale tra ereditarietà e interfaccia è quello l'ereditarietà consiste nel derivare nuove classi da classi esistenti e un'interfaccia deve implementare classi astratte e ereditarietà multipla.

CONTENUTO

1. Panoramica e differenza chiave
2. Cos'è l'ereditarietà in Java
3. Cos'è l'interfaccia in Java
4. Somiglianze tra ereditarietà e interfaccia in Java
5. Confronto affiancato - Ereditarietà rispetto all'interfaccia in Java in formato tabulare
6. Sommario

Cos'è l'ereditarietà in Java?

L'ereditarietà può raggiungere l'usabilità del codice. L'ereditarietà aiuta a riutilizzare gli attributi e i metodi di una classe esistente. Il meccanismo di derivare una nuova classe usando la vecchia classe è chiamato ereditarietà. La vecchia classe è conosciuta come genitore o super classe. La classe derivata si chiama child class o subclass.

La sintassi dell'ereditarietà di Java è la seguente.

class subclass_name estende superclass_name

dichiarazione variabile;

dichiarazione del metodo;

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

classe pubblica A

public void sum ()

System.out.println ( “Sum”);

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

classe pubblica B

public void sub ()

System.out.println ( “Sub”);

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

la classe pubblica B estende la classe A

public void 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 utilizzando l'ereditarietà.

public static void main (String [] args)

B obj = new B ();

obj.sub ();

obj.sum ();

Esistono diversi tipi di ereditarietà. Sono ereditarietà singola, ereditarietà multipla, ereditarietà multi-livello e ereditarietà gerarchica. Nel eredità singola, c'è una classe base e una classe derivata. Nel eredità multi-livello, ci sono tre classi e cioè classe base, classe intermedia e classe derivata. La classe intermedia eredita dalla classe base e la classe derivata eredita dalla classe intermedia. Nel eredità gerarchica, c'è una classe base e molte classi derivate. C'è un tipo speciale conosciuto come Eredità ibrida. È una combinazione di due o più tipi di ereditarietà.

Figura 01: ereditarietà

Nel Eredità 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 tale metodo dalla classe derivata, causerà un problema di ambiguità. Ereditare 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 che nasconde i dettagli dell'implementazione e mostra solo le funzionalità all'utente. L'astrazione può essere ottenuta utilizzando classi o interfacce astratte. 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 i 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 usando 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 ( “Somma”);

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 = new C ();

obj.sum ();

obj.sub ();

Quindi, le interfacce possono utilizzare 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 ( “Somma”);

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 = 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 legati 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 di OOP per derivare nuove classi dalle classi esistenti. L'interfaccia è un meccanismo in OOP per implementare l'astrazione e l'ereditarietà multipla.
uso
L'ereditarietà consente la riusabilità del codice. Le interfacce forniscono l'astrazione e l'ereditarietà multipla.

Riassunto - Ereditarietà vs Interface in Java

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

Scarica la versione PDF di Ereditarietà vs Interfaccia in Java

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

Riferimento:

1. Punto, esercitazioni. "Java Inheritance"., Tutorial Point, 31 ottobre 2017. Disponibile qui 
2. Point, Tutorials. "Interfacce Java". , Punto tutorial, 31 ottobre 2017. Disponibile qui 

Cortesia dell'immagine:

1.'CPT-OOP-eredità-bikes 'By Pluke - Opera propria, (Public Domain) via Commons Wikimedia