Forskelle mellem Java-interface vs Abstract Class

En grænseflade specificerer, hvad en klasse skal gøre, men ikke hvordan. Det er dybest set en plan for klassen. De variabler, der er erklæret i en grænseflade, er som standard offentlige, statiske og endelige. En klasse, der er erklæret med nøgleord "abstrakt" kaldes en abstrakt klasse En klasse, der stammer fra klassen Abstrakt, skal definere alle metoder, der er erklæret abstrakte i en abstrakt klasse.

Hvad er interface?

En grænseflade er som en klasse, men det er ikke, der kan have metoder og variabler som en klasse, men metoder, der er erklæret i en interface er som standard abstrakte. En grænseflade bruges til at give fuld abstraktion, da metoder i grænseflader ikke har en krop. Så de skal implementeres af klassen, før de prøver at få adgang til dem. Generelt skal en klasse, der implementerer interface, definere alle metoder, der er erklæret i en grænseflade, hvis det ikke er det, skal klassen erklæres abstrakt. Vi kan ikke udvide grænsefladen til mere end en klasse, da Java ikke tillader det. For at erklære en grænseflade er vi nødt til at bruge interface-nøgleord og til at implementere det interface, vi har brug for at bruge redskaber til nøgleord.

Hvad er abstraktet?

En klasse, der er erklæret med nøgleord "abstrakt" kaldes en abstrakt klasse. En abstrakt klasse kan have abstrakt (metode uden en krop) og konkrete metoder (metode med en krop), i modsætning til en normal klasse. Abstrakt klasse kan ikke startes, dvs. vi kan ikke oprette et objekt til det, men kan have referencer til abstrakt klasse ved at oprette en anden klasse, der udvider den abstrakte klasse og giver implementering af metoder. Vi kan bruge et barns objekt (som er oprettet) for at kalde abstrakte og normale metoder. Det kan have konstruktører, og abstrakt klasse kaldes, når der oprettes en arvet klassekurs. I Java kan vi have en abstrakt klasse uden abstrakt nøgleord, men disse klasser kan ikke blive instantieret, kun arvet og kan også have endelige metoder.

Sammenligning mellem hoved og hoved mellem Java-interface vs Abstrakt klasse (Infografik)

Nedenfor er de Top 9 sammenligninger mellem Java-interface vs Abstract Class

Nøgleforskelle mellem Java-interface vs Abstract Class

Både Java-interface vs Abstract Class er populære valg på markedet; lad os diskutere nogle af de største forskelle mellem Java-interface vs abstrakt klasse:

  • En grænseflade kan bruges til at opnå flere arver og løs kobling, som vi ikke kan opnå af den abstrakte klasse.
  • Interface brugt til at opnå fuldstændig abstraktion, mens en abstrakt klasse kan opnå delvis abstraktion.
  • En abstrakt klasse udvider kun en normal klasse eller abstrakt klasse ad gangen, mens en grænseflade kan udvide ethvert antal grænseflader ad gangen.
  • En abstrakt klasse udvider en anden abstrakt eller normal klasse, mens en grænseflade kun kan udvide en anden Java-grænseflade.
  • I en abstrakt klasse er vi nødt til at erklære metoder ved hjælp af "abstrakt" nøgleord, mens vi i grænsefladen kan erklære metoder med eller uden det "abstrakte" nøgleord.
  • En grænseflade kan kun have abstrakte metoder, mens en abstrakt klasse kan have både abstrakte og normale klasser.
  • En abstrakt klasse kan have forskellige variabler som statiske, endelige, ikke-endelige, ikke-statiske, offentlige, private osv. Mens interface kun kan have offentlige, statiske og endelige variabler.
  • En abstrakt klasse og dens metoder kan oprettes ved hjælp af nøgleord "abstrakt", mens interface-nøgleord bruges til at oprette interface, men ikke metoder.
  • En abstrakt klasse kan have konstruktører, mens interface ikke har en konstruktør.
  • En abstrakt klasse bruges til at definere kontrakt, metodeimplementeringer til underklasse, mens en grænseflade bruges til at definere en kontrakt for underklasser.
  • En grænseflade kan kun udvide andre Java-grænseflader, mens en abstrakt klasse også kan udvide anden klasse og implementere interface.
  • En klasse, der udvider en abstrakt klasse ved hjælp af udvider nøgleord, skal implementere alle metoder, der er erklæret i abstrakt klasse, medmindre en klasse også er en abstrakt klasse, hvorimod klasse, der implementerer grænsefladen ved hjælp af interface-nøgleord, også giver en implementering for alle metoder, der er erklæret i grænsefladen.

Sammenligningstabel Java-interface vs Abstrakt klasse

Følgende er sammenligningstabellen mellem Java Interface vs Abstract Class

Sammenligningsgrundlaget mellem Java-interface vs Abstract ClassAbstrakt klasseJava-interface
MetodetypeEn abstrakt klasse kan have både abstrakte (metoder uden krop) og ikke-abstrakte (metoder med et krop) metoderI interface kan vi kun have abstrakte metoder. Fra Java 8 kan interface også have statiske og standardmetoder
SyntaksEn abstrakt klasse kan erklæres som følger:
offentlig abstrakt klasseskole (Offentlige abstrakte ugyldige klasser ();
offentlig abstrakt tom styrke ();)
En grænseflade kan deklareres som følger:
offentlig interfaceform (Void draw_rect (); Void draw_square ();)
Endelig variabelEn abstrakt klasse kan have endelige og ikke-endelige variabler.Mens interface kun kan have endelige variabler, da variabler som standard er endelige i grænsefladen.
ImplementeringEn abstrakt klasse kan give implementering af alle abstrakte metoder i grænsefladen.Mens vi i interface ikke kan levere implementering af en abstrakt klasse.
Variabel typeEn abstrakt klasse kan alle typer variabler, dvs. endelig, ikke-endelig, statisk, ikke-statisk, privat, offentlig osv.Mens interface kun kan have offentlige, statiske og endelige variabler.
Data medlemmer TilgængelighedEn abstrakt klasse har kan have klassemedlemmer som private, beskyttede, offentlige osv.En grænseflade kan kun have offentlige klassemedlemmer, da grænsefladedatamedlemmer er offentlige som standard.
Arv kontra abstraktionEn abstrakt klasse kan udvides ved hjælp af "udvider" nøgleord og har brug for at tilvejebringe implementering af alle deklarerede metoder i forældreklassen eller abstrakt klasseEn grænseflade kan implementeres ved hjælp af "interface" nøgleord og skal tilvejebringe implementeringen for alle de metoder, der er angivet i interface
Flere implementeringerEn abstrakt klasse kan udvide en anden Java-klasse implementerer flere grænsefladerEn grænseflade kan kun udvide en anden grænseflade.
Hvornår skal brugesEn abstrakt klasse skal bruges, når nogle klasser har brug for at dele et par kodelinjer, så kan vi sætte disse koder i en abstrakt klasse og udvide med alle relaterede klasser.En grænseflade kan bruges, når vi har brug for at opnå flere arv, fuld abstraktion ved at implementere alle metoder, der er erklæret i en grænseflade af en klasse, der implementerer grænsefladen.

Konklusion - Java-interface vs Abstract Class

Endelig er det en oversigt over forskellen mellem Java Interface vs Abstract Class. Jeg håber, at du får en bedre forståelse af disse begreber Java Interface vs Abstract Class. Baseret på vores krav kan vi bruge både Java Interface vs Abstract Class sammen, kun interface og kun abstrakt klasse også. Men at bruge grænseflader og abstrakt klasse sammen er den bedste tilgang til design. Når en klasse skal dele en eller anden kode, kan vi placere den kode i den abstrakte klasse, og når en tilstand af et objekt er påkrævet, kan vi få ved at definere ikke-statiske eller ikke-endelige felter, kan vi bruge en abstrakt klasse. Vi kan bruge interface, når vi har brug for fuld abstraktion, multiple arv og løs kobling.

Anbefalet artikel

Dette har været en guide til de største forskelle mellem Java Interface vs Abstract Class. Her diskuterer vi også Java Interface vs Abstract Class nøgleforskelle med infografik og sammenligningstabel. Du kan også se på de følgende artikler -

  1. Hvor nyttig er C # interviewspørgsmål og svar?
  2. 8 Nyttig sammenligning-HTML5 vs Flash
  3. Java vs C # - 8 Vigtige forskelle
  4. Ruby vs Node
  5. HTML5 vs JavaScript-sammenligning
  6. ArrayList vs Java Vector

Kategori: