Differenze tra classe astratta e interfaccia in Java Differenza tra

Anonim

Abstract Class vs Interface in Java

Per comprendere le differenze tra la classe astratta e l'interfaccia in Java, è importante, prima di tutto, capire ognuno di questi in modo indipendente. La classe astratta in Java viene utilizzata nella dichiarazione di sottoclassi con un insieme di caratteristiche comuni. L'uso comune della classe astratta è una super classe di altre classi che, in effetti, le consente di estendere la classe astratta. Una parola chiave astratta viene utilizzata nella dichiarazione di una classe astratta. Proprio come qualsiasi altra classe avrebbe, la classe astratta ha campi che descrivono metodi e caratteristiche che la classe può eseguire. Con la semplice dichiarazione di una classe astratta, la classe non può essere avviata

Un'interfaccia Java può essere equiparata a un protocollo. Rappresenta un comportamento predefinito e concordato che consente di facilitare l'interazione di oggetti non correlati. A seconda dell'utente, l'interfaccia contiene la chiave per le diverse azioni in corso di implementazione. L'interfaccia, quindi, funge da collegamento tra il produttore e il consumatore. Le interfacce in Java sono, quindi, un gruppo di metodi contenenti corpi vuoti che possono avere dichiarazioni costanti. Nell'esporre una classe all'interfaccia Java, significa che il comportamento previsto dalla classe è l'implementazione di tutti i metodi dell'interfaccia.

Differenze

Prima di tutto, una classe astratta consente campi non statici o finali rispetto ai campi statici e finali utilizzati nelle interfacce. Le interfacce non possono avere alcun codice di implementazione utilizzato in esse e potrebbe esserci codice di implementazione utilizzato nella classe astratta. I codici di implementazione implementati nella classe astratta possono avere alcuni o tutti i metodi implementati. Per impostazione predefinita, tutti i metodi dell'interfaccia sono "astratti". “

La visibilità è anche possibile per metodi o membri di una classe astratta che possono variare come pubblico, protetto, privato o nessuno. La visibilità dell'interfaccia, d'altra parte, può essere impostata solo su una modalità di visibilità che è "pubblica". '"

Una classe astratta erediterà automaticamente la classe dell'oggetto. Questo, in effetti, significa che sono inclusi metodi come clone () ed equals (). In un'interfaccia, non è possibile ereditare la classe dell'oggetto. In seguito, la classe astratta ha la capacità di avere un costruttore, ma un'interfaccia non può averne uno.

L'interfaccia in Java ha anche una funzione molto importante con l'implementazione di più ereditarietà poiché una classe può avere solo una super classe. Sebbene possa essere presente solo una super classe, può essere implementata in qualsiasi numero di interfacce. Non è possibile avere più eredità in una classe astratta.

Nelle prestazioni, le interfacce tendono ad essere più lente nell'implementazione rispetto alla classe astratta principalmente a causa della direzione extra di trovare il metodo corrispondente in una classe. La differenza, tuttavia, è diventata più lenta a causa delle moderne macchine virtuali Java che vengono continuamente aggiornate.

L'aggiunta di un metodo in un'interfaccia richiede di rintracciare tutte le classi di implementazione che implementano l'interfaccia specifica. In alternativa, è possibile estendere l'interfaccia in modo da consentirgli di disporre di metodi aggiuntivi. Se si ha a che fare con una classe astratta, tutto ciò che è necessario è aggiungere l'implementazione predefinita del metodo e il codice continua a funzionare. Dal momento che esistono differenze tra le classi e le interfacce astratte, è importante notare che non sono rivali, ma le differenze qui menzionate servono a completarsi a vicenda.

Sommario

  1. I campi di classe astratti non sono statici o definitivi a differenza di quelli con tabelle statiche e finali.

  2. Nessun codice di implementazione può essere utilizzato nelle interfacce mentre può essere utilizzato in classe astratta.

  3. La visibilità dell'interfaccia può essere pubblica solo mentre la visibilità della classe astratta può variare.

  4. Una classe astratta erediterà automaticamente la classe dell'oggetto, ma non è possibile nell'interfaccia.

  5. La classe astratta è più veloce dell'interfaccia in fase di implementazione.