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à.
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