Qual è la differenza tra classe astratta e interfaccia in Java

Qual è la differenza tra classe astratta e interfaccia in Java

Java fornisce diversi modi per fornire l'astrazione dei dati, come le interfacce Java e le classi astratte Java. Sia l'interfaccia che la classe astratta forniscono sicurezza nascondendo i dettagli di implementazione interna e mostrando/evidenziando solo i dettagli necessari. Tuttavia, ci sono numerose somiglianze e distinzioni tra classi e interfacce astratte.

Questo post ti aiuterà negli aspetti sotto l'elenco delle interfacce Java e delle classi astratte:

  1. Cos'è un'interfaccia Java.
  2. Cos'è una classe astratta Java.
  3. Confronto basato su somiglianze.
  4. Java Abstract Class vs Java Interface.

Quindi, iniziamo!

Cos'è un'interfaccia Java

È un modello per una classe che contiene alcuni metodi astratti e variabili statiche/finali. In Java, le interfacce forniscono solo la dichiarazione del metodo, mentre le classi figlio/implementate forniscono la definizione del metodo.

Cos'è una classe astratta Java

Qualsiasi classe Java che ha almeno un metodo astratto (solo Dichiarazione del metodo) è noto come classe astratta in Java.

Confronto basato su somiglianze

Alcuni aspetti importanti delle interfacce Java e delle classi astratte sono elencati di seguito:

  • In Java, non possiamo creare l'oggetto/istanza di entrambe le interfacce o le classi astratte.
  • Entrambi forniscono solo i dettagli necessari all'utente.
  • Entrambi forniscono astrazione.
  • Entrambi possono avere metodi/funzioni astratti.
  • Entrambi nascondono le informazioni/i dettagli dell'implementazione dagli utenti.

Java Abstract Class vs Java Interface

Le parole chiave "astratte" e "interfaccia" sono utilizzate in Java per creare/dichiarare rispettivamente le classi astratte e le interfacce.

Nelle interfacce, tutti i membri sono considerati pubblici per impostazione predefinita, quindi non è necessario specificare il modificatore di accesso per i membri delle interfacce. Mentre nelle classi astratte non vi è alcuna restrizione e quindi qualsiasi modificatore di accesso può essere utilizzato per i membri di classi astratte come pubblico, protetto, ecc.

La sintassi di base di una classe astratta e un'interfaccia è mostrata negli snippet di seguito:

Classe astratta

Public Abstracss Class ClassName
Public Abstract void MethodName ();

Interfaccia

interfaccia pubblica interfacename
void MethodName ();

Le interfacce devono disporre di tutti i metodi astratti, mentre le classi astratte possono avere metodi sia astratti che di non astratto.

L'interfaccia può avere solo membri statici, mentre le classi astratte possono avere membri statici e non statici.

Le interfacce hanno solo membri "finali" (immutabili) mentre le classi astratte possono avere membri finali e non finali.

Le interfacce non hanno alcun costruttore mentre le classi astratte hanno costruttori definiti dall'utente o predefiniti.

È possibile ottenere un'eredità multipla utilizzando interfacce mentre le classi astratte non supportano l'eredità multipla.

In Java, la classe astratta può ereditare un'altra classe e può implementare molte interfacce, d'altra parte, un'interfaccia Java può estendere solo un'altra interfaccia.

Esempio

L'esempio di seguito ti permetterà di capire come funzionano le interfacce e le classi astratte in Java:

interfaccia firstinterface
void Methodone ();
void MethodTwo ();
void MethodThree ();

Classe astratta Abstract Class implementa FirstInterface
public void MethodThree ()
Sistema.fuori.println ("MethodTheree di implementazione della classe astratta");


Class NormalClass estende AbstractClass
public void methodone ()
Sistema.fuori.println ("Implementation Methodone");

public void MethodTwo ()
Sistema.fuori.println ("Implementazione metodowo");

public void MethodThree ()
Sistema.fuori.println ("Implementation MethodTree");


Classe pubblica InterfaceExample
public static void main (string [] args)
FirstInterface obj = new ClassTree ();
obj.Methodone ();
obj.MethodWo ();
obj.MethodTree ();

In questo esempio, abbiamo creato un'interfaccia "FirstInterface", una classe astratta "Abstract Class", e altre due normali classi Java ed eseguito le seguenti funzionalità:

  • IL FirstInterface contiene tre metodi astratti.
  • IL Class astratto strumenti FirstInterface e sovrascrive il MethodTree ().
  • IL Classe normale estende il Class astratto e sovrascrive il file Methodone () E Methodwo () Di FirstInterface.

IL Esempio di interface è la classe principale da cui abbiamo creato il metodo principale e invocato tutti i metodi di FirstInterface:

L'output ha verificato il funzionamento del programma Java di cui sopra.

Conclusione

In Java, l'astrazione può essere raggiunta usando classi e interfacce astratte, ed entrambi non possono essere istanziati. Tuttavia, ci sono molteplici distinzioni tra classi e interfacce astratte. Ad esempio, le interfacce devono disporre di tutti i metodi astratti mentre le classi astratte possono avere metodi astratti e non di assorbimento; Utilizzando le interfacce, è possibile ottenere un'eredità multipla mentre le classi astratte non supportano l'eredità multipla, ecc. Questo post ha spiegato vari aspetti di classi e interfacce astratte con l'aiuto di esempi adatti.