Differenza tra interfaccia e classe astratta in Java

Differenza chiave: l' interfaccia o un protocollo è un modo comune che consente a oggetti non correlati di comunicare tra loro. Rappresenta un comportamento concordato che facilita l'interazione tra i due oggetti. Una classe astratta è una classe di oggetti che non può essere istanziata o impostare un'istanza di un oggetto. Questa classe potrebbe non avere implementazione o avere un'implementazione incompleta.

Java, C ++, C # sono tutti linguaggi di programmazione complicati che richiedono uno studio e una comprensione dettagliati per essere in grado di lavorare. Esistono molti metodi diversi utilizzati in queste lingue che decidono come funzionerà la lingua. Interface e Abstract Class sono due concetti confusi che fanno parte di OOP (programmazione orientata agli oggetti). Questi due possono essere usati individualmente o insieme l'uno con l'altro. Questi due sono completamente diversi l'uno dall'altro e vengono utilizzati in diversi casi.

Java è un linguaggio di programmazione, che è stato influenzato dal linguaggio C. Deriva gran parte della sua sintassi da C e C ++, tuttavia ha meno strutture di basso livello di entrambi. Java è un linguaggio di programmazione generico progettato per avere meno dipendenze di implementazione rispetto alle lingue precedenti. È concomitante, basato su classi e un linguaggio orientato agli oggetti.

Java è stato sviluppato da James Gosling presso Sun Microsystems ed è stato rilasciato nel 1995. È stato originariamente rilasciato come componente principale della piattaforma Java di Sun Microsystems. Da allora Sun ha nuovamente licenziato la maggior parte delle sue tecnologie Java sotto la GNU General Public License. Ciò significa che tutta la tecnologia sotto licenza GNU General Public License è open source e generalmente disponibile gratuitamente. Alla fine Sun Microsystems si è fusa in Oracle Corporation. A partire dal 2012, Java è diventato uno dei linguaggi di programmazione più popolari per l'uso. Questo è particolarmente vero per le applicazioni Web client-server. Molti altri sistemi hanno sviluppato implementazioni alternative delle tecnologie Sun, come GNU Compiler per Java e GNU Classpath.

L'interfaccia o un protocollo è un modo comune che consente agli oggetti non collegati di comunicare tra loro. Rappresenta un comportamento concordato che facilita l'interazione tra i due oggetti. L'interfaccia contiene la chiave per le varie azioni in corso di implementazione e funge da collegamento tra i due diversi oggetti. Se una classe di oggetti è esposta all'interfaccia, la classe dovrebbe seguire il comportamento implementato dall'interfaccia. Comunemente, le interfacce contengono solo dichiarazioni e firme di metodo costanti. Qualsiasi interfaccia che implementa una particolare interfaccia, deve applicare tutti i metodi menzionati nell'interfaccia o essere dichiarata come una classe astratta. In Java, qualsiasi oggetto può essere definito come un'interfaccia, se quell'oggetto è nullo o contiene una classe in cui implementa quella particolare interfaccia. È possibile implementare più interfacce in una singola classe in Java utilizzando le parole chiave dello strumento.

Una classe astratta è una classe di oggetti che non può essere istanziata o impostare un'istanza di un oggetto. Questa classe potrebbe non avere implementazione o avere un'implementazione incompleta. Può anche avere metodi o proprietà astratti condivisi da tutte le sottoclassi. In alcuni linguaggi di programmazione, i tipi astratti senza implementazione sono noti come interfacce. In Java, un tipo astratto può essere creato usando la parola chiave "abstract" nella definizione della classe. Lo scopo di avere una classe astratta per posizionare tutti i metodi che non sono implementati nella classe astratta e lasciarlo alla sottoclasse per determinare come implementare queste classi. Se una classe ha un singolo metodo astratto, la classe deve essere dichiarata come una classe astratta, sebbene non sia necessario avere almeno un singolo metodo per dichiarare un estratto di classe.

Malliktalksjava.in elenca le principali differenze tra interfaccia e astratto come:

  • La classe astratta ha il costruttore, ma l'interfaccia no.
  • Le classi astratte possono avere implementazioni per alcuni dei suoi membri (metodi), ma l'interfaccia non può avere l'implementazione per nessuno dei suoi membri.
  • Le classi astratte dovrebbero avere sottoclassi che saranno inutili.
  • Le interfacce devono avere implementazioni di altre classi altrimenti inutili
  • Solo un'interfaccia può estendere un'altra interfaccia, ma qualsiasi classe può estendere una classe astratta.
  • Tutte le variabili nelle interfacce sono definitive per impostazione predefinita
  • Le interfacce forniscono una forma di ereditarietà multipla. Una classe può estendere solo un'altra classe.
  • Le interfacce sono limitate a metodi e costanti pubblici senza implementazione. Le classi astratte possono avere un'implementazione parziale, parti protette, metodi statici, ecc.
  • Una classe può implementare diverse interfacce. Ma in caso di classe astratta, una classe può estendere solo una classe astratta.
  • Le interfacce sono lente in quanto richiede un'ulteriore indiretta per trovare il metodo corrispondente nella classe effettiva. Le lezioni astratte sono veloci.
  • Il modificatore di accessibilità (pubblico / privato / interno) è consentito per la classe astratta. L'interfaccia non consente il modificatore di accessibilità
  • Una classe astratta può contenere metodi completi o incompleti. Le interfacce possono contenere solo la firma di un metodo ma nessun corpo. Quindi una classe astratta può implementare metodi ma un'interfaccia non può implementare metodi.
  • Una classe astratta può contenere campi, costruttori o distruttori e implementare proprietà. Un'interfaccia non può contenere campi, costruttori o distruttori e ha solo la firma della proprietà ma nessuna implementazione.
  • Vari modificatori di accesso come astratto, protetto, interno, pubblico, virtuale, ecc. Sono utili nelle classi astratte ma non nelle interfacce.
  • La portata astratta spetta alla classe derivata.
  • L'ambito dell'interfaccia è fino a qualsiasi livello della catena di ereditarietà.

Le informazioni per il tavolo sono gentilmente concesse da codeproject.com e mindprod.com

Interfaccia

Classe astratta

Eredità multipla

Una classe può ereditare diverse interfacce.

Una classe può ereditare solo una classe astratta.

Implementazione predefinita

Un'interfaccia non può fornire alcun codice, solo la firma.

Una classe astratta può fornire un codice completo e predefinito e / o solo i dettagli che devono essere sovrascritti.

Modificatori di accesso

Un'interfaccia non può avere modificatori di accesso per i sottotitoli, le funzioni, le proprietà ecc. Tutto viene assunto come pubblico.

Una classe astratta può contenere modificatori di accesso per i sottotitoli, le funzioni, le proprietà.

Core vs. Peripheral

Le interfacce sono utilizzate per definire le abilità periferiche di una classe. In altre parole, sia Human che Vehicle possono ereditare da un'interfaccia IMovable.

Una classe astratta definisce l'identità di base di una classe e lì viene utilizzata per oggetti dello stesso tipo.

Omogeneità

Se varie implementazioni condividono solo firme del metodo, allora è meglio usare le interfacce.

Se varie implementazioni sono dello stesso tipo e usano comportamenti o stati comuni, la classe astratta è meglio usarla.

Velocità

Richiede più tempo per trovare il metodo effettivo nelle classi corrispondenti.

Veloce

Aggiunta di funzionalità

Se aggiungiamo un nuovo metodo a un'interfaccia, dobbiamo rintracciare tutte le implementazioni dell'interfaccia e definire l'implementazione per il nuovo metodo.

Se aggiungiamo un nuovo metodo a una classe astratta, abbiamo la possibilità di fornire un'implementazione predefinita e quindi tutto il codice esistente potrebbe funzionare correttamente.

Campi e costanti

Nessun campo può essere definito nelle interfacce.

Una classe astratta può avere campi e costanti definiti.

Concisione

Le dichiarazioni costanti in un'interfaccia sono tutte presunte statiche finali pubbliche.

Il codice condiviso può essere aggiunto in una classe astratta.

costanti

Solo le costanti statiche finali possono utilizzarle senza qualificazione nelle classi che implementano l'interfaccia.

Sono possibili sia l'istanza che le costanti statiche. Sia il codice interstiziale statico che quello istanza sono anche possibili per calcolare le costanti.

Convenienza di terzi

Un'implementazione dell'interfaccia può essere aggiunta a qualsiasi classe di terze parti esistente.

Una classe di terze parti deve essere riscritta per estendersi solo dalla classe astratta.

is-a vs. -able o can-do

Le interfacce sono spesso utilizzate per descrivere le abilità periferiche di una classe, non la sua identità centrale, ad esempio una classe di Automobile potrebbe implementare l'interfaccia Riciclabile, che potrebbe applicarsi a molti oggetti altrimenti completamente non correlati.

Una classe astratta definisce l'identità centrale dei suoi discendenti. Le interfacce implementate enumerano le cose generali che una classe può fare, non le cose di una classe.

In un contesto Java, gli utenti dovrebbero in genere implementare l'interfaccia Runnable piuttosto che estendere Thread, perché non sono realmente interessati a fornire alcune nuove funzionalità di Thread, normalmente vogliono solo che alcuni codici abbiano la capacità di funzionare in modo indipendente. Vogliono creare qualcosa che può essere eseguito in un thread, non un nuovo tipo di thread. Il dibattito simile è -uno contro ha-un arriva quando si decide di ereditare o delegare.

Collegare

L'utente può scrivere un nuovo modulo sostitutivo per un'interfaccia che non contenga un solo stick di codice in comune con le implementazioni esistenti. Quando l'utente implementa l'interfaccia, inizia da zero senza alcuna implementazione predefinita. L'utente deve ottenere strumenti da altre classi; niente viene fornito con l'interfaccia diversa da alcune costanti. Ciò dà all'utente la libertà di implementare un design interno radicalmente diverso.

L'utente deve utilizzare la classe astratta così com'è per il codice base, con tutto il suo bagaglio, buono o cattivo. L'autore della classe astratta ha imposto la struttura all'utente.

Manutenzione

Se il codice client parla solo in termini di un'interfaccia, è possibile modificare facilmente l'implementazione concreta dietro ad essa, utilizzando un metodo factory.

Se il codice client parla solo in termini di una classe astratta, è possibile modificare facilmente l'implementazione concreta dietro ad essa, utilizzando un metodo factory.

Raccomandato

Articoli Correlati

  • confronti popolari: Differenza tra orologio e orologio

    Differenza tra orologio e orologio

    Differenza chiave: un orologio è solitamente attaccato ad un cinturino o è una fascia indossata attorno al polso che indica il tempo. Un orologio è uno strumento montato a muro per calcolare il tempo. Oggi, un orologio o un orologio è la cosa più essenziale. Il concetto base di orologio e orologio è lo stesso. Dann
  • confronti popolari: Differenza tra ammortamento e ammortamento

    Differenza tra ammortamento e ammortamento

    Differenza fondamentale: l' ammortamento si riferisce alla ripartizione del costo di un'attività tangibile rispetto alla vita di tale attività. L'ammortamento di solito si riferisce alla distribuzione di un costo di un'attività immateriale sulla vita utile di tale attività. Sia gli ammortamenti che gli ammortamenti sono metodi di recupero dei costi e vengono utilizzati per allocare il costo dell'attività lungo la sua vita utile. Men
  • confronti popolari: Differenza tra KH / s, MH / se GH / s

    Differenza tra KH / s, MH / se GH / s

    Differenza chiave: 1 KH / s equivale a 1.000 hash al secondo. 1 MH / s è 1.000.000 di hash al secondo. 1 GH / s è 1.000.000.000 di hash al secondo. KH / s, MH / s e GH / s sono termini che costituiscono una parte importante del data mining e del bit coin mining. Questi termini sono generalmente fonte di confusione per le persone che non conoscono bene il processo di elaborazione del bitcoin.
  • confronti popolari: Differenza tra LG Optimus L7 II Dual e Samsung Galaxy Win

    Differenza tra LG Optimus L7 II Dual e Samsung Galaxy Win

    Differenza fondamentale: LG Optimus L7 II Dual è un telefono di fascia media di LG. Il telefono è un telefono dual SIM. Il dispositivo è dotato di un display LCD IPS da 4, 3 pollici, touchscreen capacitivo con una risoluzione di 480 x 800 pixel. Funziona su Android v 4.1.2 (JellyBean), che è supportato da processore Dual-Core Qualcomm MSM8225 Snapdragon da 1.0 G
  • confronti popolari: Differenza tra spettro di linea e spettro di banda

    Differenza tra spettro di linea e spettro di banda

    Differenza fondamentale: in Fisica, uno "spettro di linee" è un insieme di lunghezze d'onda discrete da atomi gassosi, mentre uno "spettro di banda" è prodotto da molecole, che consistono in una serie di linee strettamente distanziate separate da spazi scuri chiamati bande. Lo spettro della linea è il risultato delle interazioni tra i sistemi quantistici e un singolo fotone. Q
  • confronti popolari: Differenza tra dittatura e autocrazia

    Differenza tra dittatura e autocrazia

    Differenza fondamentale: una dittatura è una forma di governo in cui un dittatore ha il potere completo. Mentre l'autocrazia è un sistema di governo in cui il potere supremo è nelle mani di una sola persona, le cui decisioni non sono soggette a restrizioni legali. La democrazia è considerata la migliore forma di governance, con molte diverse ideologie presenti in tutto il mondo. C&
  • confronti popolari: Differenza tra CAT, MAT e GMAT

    Differenza tra CAT, MAT e GMAT

    Differenza principale: CAT (Common Admission Test), MAT (Management Aptitude Test) e GMAT (Graduate Management Admission Test) sono test generali di gestione, che vengono condotti nei loro programmi previsti ogni anno per l'ammissione all'entrata di gestione. Differiscono nelle rispettive istituzioni, nel loro schema cartaceo e nelle date
  • confronti popolari: Differenza tra Hashing e Crittografia

    Differenza tra Hashing e Crittografia

    Differenza chiave: la crittografia riguarda la trasformazione dei dati al fine di mantenerli riservati o segreti dagli altri. D'altra parte, Hashing si basa sul concetto di integrità. Nell'hash, un nuovo messaggio viene creato dal messaggio originale in un modo particolare con il quale non può essere invertito.
  • confronti popolari: Differenza tra Samsung Rugby e Samsung Rugby 2

    Differenza tra Samsung Rugby e Samsung Rugby 2

    Differenza chiave: Samsung Rugby II ha uno schermo da 2, 2 ", mentre il Samsung Rugby ha uno schermo da 2". Il display esterno è stato aumentato a 1, 3 "nel Rugby II. Il peso del Rugby II è stato ridotto a 3, 52 once da 4, 66 once. La memoria interna del Rugby II è stata ridotta a 70 MB da 128 MB del Rugby originale. A

Scelta Del Redattore

Differenza tra Samsung Galaxy Tab 2 7.0 e Asus FonePad

Differenza chiave: Samsung Tab 2 7.0 è un tablet da 7 pollici che offre un display LCD TFT PLS con densità di circa 170 ppi. Il dispositivo è disponibile anche in due versioni; Wi-Fi solo e Wi-Fi + 4G. Il tablet Wi-Fi only è alimentato da un processore Dual Core da 1 GHz ed è disponibile con l'Ice Cream Sandwich Android v4.0, m