Forskjeller mellom Java-grensesnitt vs abstrakt klasse

Et grensesnitt vil spesifisere hva en klasse trenger å gjøre, men ikke hvordan. Det er i utgangspunktet en blåkopi for klassen. Variablene som er erklært i et grensesnitt er som standard offentlige, statiske og endelige. En klasse som er erklært med nøkkelord "abstrakt" kalles en abstrakt klasse En klasse som er avledet fra klassen Abstrakt, må definere alle metoder som er erklært som abstrakte i en abstrakt klasse.

Hva er grensesnitt?

Et grensesnitt er som en klasse, men det er ikke som kan ha metoder og variabler som klasse, men metoder som er erklært i et grensesnitt er abstrakte som standard. Et grensesnitt brukes for å gi full abstraksjon da metoder i grensesnitt ikke har en kropp. Så de må implementeres av klassen før du prøver å få tilgang til dem. Generelt må en klasse som implementerer grensesnitt definere alle metoder som er erklært i et grensesnitt hvis det ikke er det, så må klassen erklæres abstrakt. Vi kan ikke utvide grensesnittet til mer enn en klasse som Java ikke tillater. For å erklære et grensesnitt, må vi bruke grensesnitt nøkkelord og for å implementere grensesnittet vi trenger for å bruke redskaper nøkkelordet.

Hva er sammendraget?

En klasse som er erklært med nøkkelord “abstrakt” kalles en abstrakt klasse. En abstrakt klasse kan ha abstrakt (metode uten kropp) og konkrete metoder (metode med en kropp), i motsetning til en vanlig klasse. Abstrakt klasse kan ikke opprettes, dvs. vi kan ikke lage et objekt for det, men kan ha referanser til abstrakt klasse ved å lage en annen klasse som utvider den abstrakte klassen og gir implementering av metoder. Vi kan bruke et objekt av et barn (som er nyopprettet) for å kalle abstrakte og normale metoder. Det kan ha konstruktører og abstrakt klasse kalles når en arvet klassevis blir opprettet. I Java kan vi ha en abstrakt klasse uten abstrakte nøkkelord, men disse klassene kan ikke være øyeblikkelig, bare arvet og kan ha endelige metoder også.

Sammenligning mellom head-to-head mellom Java-grensesnitt vs Abstract Class (Infographics)

Nedenfor er de 9 beste sammenligningene mellom Java-grensesnitt og abstrakt klasse

Viktige forskjeller mellom Java-grensesnitt kontra abstrakt klasse

Både Java Interface vs Abstract Class er populære valg i markedet; la oss diskutere noen av de viktigste forskjellene mellom Java-grensesnitt og abstrakt klasse:

  • Et grensesnitt kan brukes til å oppnå flere arv og løs kobling som vi ikke kan oppnå av den abstrakte klassen.
  • Grensesnitt brukt for å oppnå fullstendig abstraksjon mens en abstrakt klasse kan oppnå delvis abstraksjon.
  • En abstrakt klasse utvider bare en normal klasse eller abstrakt klasse om gangen, mens et grensesnitt kan utvide et hvilket som helst antall grensesnitt om gangen.
  • En abstrakt klasse utvider en annen abstrakt eller normal klasse, mens et grensesnitt bare kan utvide et annet Java-grensesnitt.
  • I en abstrakt klasse må vi erklære metoder ved å bruke "abstrakte" nøkkelord, mens vi i grensesnittet kan erklære metoder med eller uten det "abstrakte" nøkkelordet.
  • Et grensesnitt kan bare ha abstrakte metoder mens en abstrakt klasse kan ha både abstrakte og normale klasser.
  • En abstrakt klasse kan ha forskjellige variabler som statiske, endelige, ikke-endelige, ikke-statiske, offentlige, private osv. Mens grensesnitt kun kan ha offentlige, statiske og endelige variabler.
  • En abstrakt klasse og dens metoder kan opprettes med nøkkelord "abstrakt", mens grensesnitt nøkkelord brukes til å lage grensesnitt, men ikke metoder.
  • En abstrakt klasse kan ha konstruktører mens grensesnitt ikke har en konstruktør.
  • En abstrakt klasse brukes til å definere kontrakt, metodeimplementeringer for underklasse mens et grensesnitt brukes til å definere en kontrakt for underklasser.
  • Et grensesnitt kan bare utvide andre Java-grensesnitt, mens en abstrakt klasse kan utvide annen klasse og implementere grensesnitt også.
  • En klasse som utvider en abstrakt klasse ved å utvide søkeord, trenger å implementere alle metoder som er erklært i abstrakt klasse, med mindre en klasse også er en abstrakt klasse, mens klasse som implementerer grensesnittet ved bruk av grensesnitt nøkkelord også gir en implementering for alle metoder som er deklarert i grensesnittet.

Sammenligningstabell Java-grensesnitt vs abstrakt klasse

Følgende er sammenligningstabellen mellom Java Interface vs Abstract Class

Grunnlaget for sammenligning mellom Java Interface vs Abstract ClassAbstrakt klasseJava-grensesnitt
MetodetypeEn abstrakt klasse kan ha både abstrakte (metoder uten kropp) og ikke-abstrakte (metoder med en kropp) metoderI grensesnitt kan vi bare ha abstrakte metoder. Fra Java 8 kan grensesnitt også ha statiske og standardmetoder
syntaxEn abstrakt klasse kan deklareres som følger:
offentlig abstrakt klasseskole (Offentlige abstrakte tomklasser ();
public abstract void styrke ();)
Et grensesnitt kan deklareres som følger:
offentlig grensesnittform (Void draw_rect (); Void draw_square ();)
Endelig variabelEn abstrakt klasse kan ha endelige og ikke-endelige variabler.Mens grensesnittet bare kan ha endelige variabler, da variabler som standard er endelige i grensesnittet.
GjennomføringEn abstrakt klasse kan gi implementering av alle abstrakte metoder i grensesnittet.Mens vi i grensesnittet ikke kan tilby implementering av en abstrakt klasse.
Variabel typeEn abstrakt klasse kan alle typer variabler, dvs. endelige, ikke-endelige, statiske, ikke-statiske, private, offentlige osv.Mens grensesnittet kun kan ha offentlige, statiske og endelige variabler.
Datamedlemmer TilgjengelighetEn abstrakt klasse har kan ha klassemedlemmer som private, beskyttede, offentlige osv.Et grensesnitt kan bare ha medlemmer av offentlige klasser ettersom grensesnittdatamedlemmer er offentlige som standard.
Arv kontra abstraksjonEn abstrakt klasse kan utvides ved å bruke "extends" søkeord og trenger å sørge for implementering av alle deklarerte metoder i foreldreklassen eller abstrakt klasseEt grensesnitt kan implementeres ved hjelp av "grensesnitt" -nøkkelord og må sørge for implementering for alle metodene som er deklarert i grensesnittet
Flere implementeringerEn abstrakt klasse kan utvide en annen Java-klasse implementerer flere grensesnittEt grensesnitt kan bare utvide et annet grensesnitt.
Når du skal bruke denEn abstrakt klasse må brukes når noen klasser trenger å dele noen få kodelinjer, så kan vi sette disse koden i en abstrakt klasse og utvide med alle relaterte klasser.Et grensesnitt kan brukes når vi trenger å oppnå flere arv, full abstraksjon ved å implementere alle metoder som er erklært i et grensesnitt av en klasse som implementerer grensesnittet.

Konklusjon - Java-grensesnitt vs abstrakt klasse

Endelig er det en oversikt over forskjellen mellom Java Interface vs Abstract Class. Jeg håper du vil ha en bedre forståelse av disse konseptene Java Interface vs Abstract Class. Basert på våre krav kan vi bruke både Java Interface vs Abstract Class sammen, bare grensesnitt og bare abstrakt klasse også. Men å bruke grensesnitt og abstrakt klasse sammen er den beste tilnærmingen for utforming. Når en klasse trenger å dele noen kode, kan vi plassere den koden i den abstrakte klassen, og når en tilstand av et objekt er nødvendig vi kan få ved å definere ikke-statiske eller ikke-endelige felt, kan vi bruke en abstrakt klasse. Vi kan bruke grensesnitt når vi trenger full abstraksjon, multiple arv og løs kobling.

Anbefalt artikkel

Dette har vært en guide til de største forskjellene mellom Java Interface vs Abstract Class. Her diskuterer vi også Java Interface vs Abstract Class viktige forskjeller med infografikk og sammenligningstabell. Du kan også se på følgende artikler -

  1. Hvor nyttig er C # intervjuspørsmål og svar?
  2. 8 Nyttig sammenligning-HTML5 vs Flash
  3. Java vs C # - 8 viktige forskjeller
  4. Ruby vs Node
  5. HTML5 vs JavaScript-sammenligning
  6. ArrayList vs Java Vector