Qual è la differenza tra Abstract Class e Interface in Java

Il differenza principale tra classe astratta e interfaccia in Java è che il la classe astratta viene utilizzata per implementare l'astrazione mentre l'interfaccia viene utilizzata per implementare l'astrazione e l'ereditarietà multipla.

Uno dei pilastri principali in Object Oriented Programming (OOP) è l'astrazione. È il processo di nascondere i dettagli di implementazione e visualizzare solo la funzionalità per l'utente. Ad esempio, l'utente non ha bisogno di capire il circuito all'interno del telecomando per farlo funzionare. L'astrazione è simile a quella. Permette al programmatore di concentrarsi su cosa fa l'oggetto invece di come è fatto. In Java, esistono due metodi per ottenere l'astrazione: utilizzando classi astratte e utilizzando le interfacce. Inoltre, l'ereditarietà è un altro pilastro OOP. Si riferisce all'utilizzo di dati e metodi di una classe già esistente. L'ereditarietà multipla si riferisce all'utilizzo di dati e metodi di più classi. È possibile implementare l'ereditarietà multipla utilizzando le interfacce.

Aree chiave coperte

1. Cos'è la classe astratta in Java
     - Definizione, Funzionalità
2. Cos'è l'interfaccia in Java
     - Definizione, Funzionalità
3. Qual è la differenza tra Abstract Class e Interface in Java
     - Confronto tra le principali differenze

Parole chiave

Classe astratta, interfaccia, ereditarietà multipla

Cos'è la classe astratta in Java

Una classe dichiarata con la parola chiave abstract è nota come classe astratta. Una classe astratta può avere metodi astratti e metodi non astratti. Una classe può estendere una classe astratta e implementare i metodi astratti della classe astratta. Non è possibile creare oggetti da una classe astratta ma è possibile creare oggetti da una classe che estende la classe astratta. Fare riferimento all'esempio seguente.

Figura 1: classe astratta di forme

Figura 2: classe Rectangle

Figura 3: classe principale per il programma 1

La forma è una classe astratta. Ha il metodo astratto disegnato e la visualizzazione del metodo non astratto. La classe Rectangle estende Shape. Pertanto, la classe Rectangle implementa il disegno del metodo astratto. Nella funzione principale, viene creato un oggetto Rectangle. Obj.draw () chiamerà il metodo in Rectangle draw () e stamperà "Rectangle".  

Cos'è l'interfaccia in Java

Un'interfaccia in Java è simile a una classe. Tutti i metodi in un'interfaccia sono metodi astratti. Simile a una classe astratta, un'interfaccia non può essere istanziata. Un'interfaccia può essere utilizzata per l'astrazione e per l'implementazione dell'ereditarietà multipla. Un'interfaccia è dichiarata usando la parola chiave dell'interfaccia. Una classe che implementa l'interfaccia dovrebbe implementare tutti i metodi dichiarati nell'interfaccia. Fai riferimento all'esempio seguente che illustra l'uso dell'interfaccia per ottenere l'astrazione.

Figura 4: interfaccia di forma

Figura 5: classe Circle

Figura 6: Main Class of program 2

Shape è un'interfaccia, che ha un metodo astratto chiamato draw. La classe Circle estende Shape. Pertanto, la classe Circle implementa il disegno del metodo astratto. Nella funzione principale, viene creato un oggetto Circle. S.draw () chiamerà il metodo draw in Circle e stamperà "Circle". 

Le interfacce possono anche essere utilizzate per implementare l'ereditarietà multipla.

Figura 7: Interfaccia A

Figura 8: interfaccia B

Figura 9: Classe C

Figura 10: Classe principale del programma 3

Le interfacce A e B hanno entrambe la visualizzazione del metodo astratto. La classe C implementa entrambe le interfacce A e B. La classe C fornisce l'implementazione per la visualizzazione del metodo. Nel metodo principale, viene creato un oggetto di C. Obj.display chiamerà il metodo di visualizzazione in C e stamperà "Hello World!".

Differenza tra classe astratta e interfaccia in Java

Definizione

Una classe astratta è una classe dichiarata con una parola chiave astratta, che è una raccolta di metodi astratti e non astratti. Al contrario, un'interfaccia in Java è un tipo di riferimento simile a una classe che è una raccolta di metodi astratti. Questa è la differenza fondamentale tra classe astratta e interfaccia in Java.

variabili

Le variabili utilizzate sono una differenza tra classe astratta e interfaccia in Java. Mentre una classe astratta può avere variabili finali, non definitive, statiche e non statiche, un'interfaccia può avere solo variabili statiche e finali.

metodi

Un'altra differenza tra la classe astratta e l'interfaccia in Java è che la classe astratta può avere metodi astratti e metodi non astratti mentre l'interfaccia può avere solo metodi astratti.

Eredità multipla

Inoltre, le classi astratte non possono essere utilizzate per implementare l'ereditarietà multipla. Ma le interfacce possono essere utilizzate per implementare più interfacce. Pertanto, possiamo dire che l'applicabilità è una differenza tra la classe astratta e l'interfaccia in Java.

Parola chiave della classe

Inoltre, la parola chiave abstract viene utilizzata per dichiarare la classe astratta ma la parola chiave interface viene utilizzata per dichiarare un'interfaccia. 

Estensione e implementazione

Inoltre, una classe astratta può essere estesa usando la parola chiave "extends". Una classe di interfaccia può essere implementata usando la parola chiave "attrezzi".

Implementazione

Inoltre, la classe astratta può essere implementata usando la parola chiave "implements" mentre l'interfaccia è utilizzata per implementare l'astrazione e l'ereditarietà multipla.

Conclusione

La differenza tra la classe astratta e l'interfaccia in java è che la classe astratta viene utilizzata per implementare l'astrazione mentre l'interfaccia viene utilizzata per implementare l'astrazione e l'ereditarietà multipla.

Riferimento:

1. "Classe astratta in Java - Javatpoint". Www.javatpoint.com, disponibile qui.
2. "Interfaccia in Java - Javatpoint." Www.javatpoint.com, disponibile qui.