Differenze tra le interfacce e abstract in Java

July 4

Differenze tra le interfacce e abstract in Java


Java è un linguaggio di programmazione la prima volta nel 1995 da Sun Microsystems. Entrambe le interfacce e classi astratte sono utilizzati in codice Java quando diversi sottotipi della stessa classe devono comportarsi in modo diverso. Le classi astratte e le interfacce funzionano in modo molto diverso e sono utilizzati in modi diversi, anche se ci sono alcune somiglianze tra di loro.

Lingua

Le classi astratte e le interfacce consentono di codice diverso da utilizzare. Per esempio, una classe astratta può contenere classi concrete, mentre l'interfaccia può contenere classi astratte. Una classe astratta è anche più fluido di un'interfaccia e può contenere i campi che non sono statici o finale, mentre l'interfaccia non può. Inoltre, una classe astratta eredita automaticamente una classe di oggetti, il che significa che includerà metodi come "clone ()" e "equals ()", mentre l'interfaccia non può includere questi metodi.

metodi implementati

I metodi di una classe astratta possono essere definite con una serie di parametri di visibilità, tra pubblico, protetto, privato o nessuno. Un'interfaccia può essere visibilmente pubblico soltanto. Ciò significa che tutti i membri di un'interfaccia sono pubblici per impostazione predefinita, mentre i membri di una classe astratta possono includere i membri non pubblici o metodi.

Prestazione

In generale, le interfacce funzionano un po 'più lento di classi astratte perché introducono una nuova classe per ogni metodo che viene implementata, e può richiedere più tempo per un'interfaccia per individuare il metodo corretto in ogni classe. Una classe astratta, d'altra parte, può applicare un metodo a più classi contemporaneamente, e quindi esegue veloce. Tuttavia, la maggior parte delle JVM (Java Virtual Machine) di 2011 compensare la differenza, e queste differenze di prestazioni sono difficilmente notato più.

Uso

Un'interfaccia deve essere utilizzato quando lo script si chiede di fornire implementazione per tutti i metodi. Le interfacce possono costruire tutte le classi back up da zero in modo sistematico. Le classi astratte dovrebbero essere usati quando si ha un parziale esecuzione dello script, ma non è del tutto completa. Lasciare queste implementazioni incomplete come "astratto" e consentire un server interpretarli.