Razlike med Java Interface in Abstraktnim razredom

Vmesnik bo določil, kaj mora razred narediti, ne pa kako. To je v bistvu načrt za razred. Spremenljivke, prijavljene v vmesniku, so privzeto javne, statične in končne. Razred, ki je deklariran s ključno besedo "abstrakt", se imenuje abstraktni razred. Razred, ki izhaja iz razreda Abstrakt, mora opredeliti vse metode, ki so v abstraktnem razredu označene kot abstraktne.

Kaj je vmesnik?

Vmesnik je kot razred, vendar ne more imeti metod in spremenljivk kot razred, ampak so metode, deklarirane v vmesniku, privzeto abstraktne. Vmesnik se uporablja za popolno abstrakcijo, saj metode v vmesnikih nimajo telesa. Zato jih mora razred izvajati, preden poskušajo dostopati do njih. Na splošno mora razred, ki izvaja vmesnik, določiti vse metode, deklarirane v vmesniku, če ni, potem mora biti razred razglašen za abstraktni. Vmesnika ne moremo razširiti na več razredov, saj Java ne dovoljuje. Za prijavo vmesnika moramo uporabiti ključno besedo vmesnika, za izvedbo vmesnika pa moramo uporabiti ključno besedo Implements.

Kaj je izvleček?

Razred, ki je deklariran s ključno besedo "abstrakt", se imenuje abstraktni razred. Razred Abstrakt ima lahko abstraktne (metoda brez telesa) in konkretne metode (metoda s telesom), za razliko od običajnih razredov. Abstraktnega razreda ni mogoče instancirati, tj. Ne moremo ustvariti predmeta zanj, lahko pa se sklicuje na abstraktni razred z ustvarjanjem drugega razreda, ki razširja abstraktni razred in omogoča izvajanje metod. Z otrokovim predmetom (ki je na novo ustvarjen) lahko pokličemo abstraktne in običajne metode. Lahko ima konstruktorje in abstraktni razred se imenuje, ko se ustvari podedovani primerek razreda. Na Javi imamo lahko abstraktni razred brez abstraktne ključne besede, vendar teh razredov ni mogoče instancirati, le podedovati in lahko imajo tudi končne metode.

Primerjava med dvema osebama in vmesnim razredom Java (Infographics)

Spodaj je prvih 9 primerjav med Java Interface in Abstraktnim razredom

Ključne razlike med Java Interface in Abstraktnim razredom

Oba Java Interface vs Abstraktni razred sta priljubljeni izbiri na trgu; pogovorimo se o nekaterih glavnih razlikah med Java Interface in Abstraktnim razredom:

  • Vmesnik lahko uporabimo za dosego več dedovanja in ohlapne povezave, česar abstraktni razred ne moremo doseči.
  • Vmesnik, ki se uporablja za popolno abstrakcijo, medtem ko abstraktni razred lahko doseže delno abstrakcijo.
  • Abstraktni razred hkrati razširi samo en običajni razred ali abstraktni razred, medtem ko lahko vmesnik hkrati razširi poljubno število vmesnikov.
  • Abstraktni razred razširi še en abstraktni ali običajni razred, medtem ko lahko vmesnik razširi le drug Java vmesnik.
  • V abstraktnem razredu moramo razglasiti metode z uporabo ključne besede "abstrakt", medtem ko lahko v vmesniku deklariramo metode z ali brez "abstraktne" ključne besede.
  • Vmesnik ima lahko samo abstraktne metode, medtem ko abstraktni razred lahko ima abstraktne in običajne razrede.
  • Abstraktni razred ima lahko različne spremenljivke, kot so statične, končne, neskončne, nestatične, javne, zasebne itd., Medtem ko ima vmesnik lahko le javne, statične in končne spremenljivke.
  • Abstraktni razred in njegove metode je mogoče ustvariti s ključno besedo "abstraktno", medtem ko se za izdelavo vmesnika uporablja ključna beseda vmesnika, ne pa metod.
  • Abstraktni razred ima konstruktorje, medtem ko vmesnik nima konstruktorja.
  • Abstraktni razred se uporablja za definiranje pogodb, izvedbe metod za podrazred, medtem ko se za določitev pogodbe za podrazred uporablja vmesnik.
  • Vmesnik lahko razširi samo druge vmesnike Java, medtem ko abstraktni razred lahko razširi tudi drug razred in vmesnik za implementacijo.
  • Razred, ki razširja abstraktni razred s ključno besedo razširja, mora implementirati vse metode, deklarirane v abstraktnem razredu, razen če je razred tudi abstrakten razred, medtem ko razred, ki izvaja vmesnik s ključno besedo vmesnika, zagotavlja tudi izvedbo za vse metode, prijavljene v vmesniku.

Primerjalna tabela Java Vmesnik in abstraktni razred

Sledi primerjalna tabela med Java Interface in Abstraktnim razredom

Osnove primerjave med Java Interface in Abstraktnim razredomIzvleček razredaJava vmesnik
Vrsta metodeRazred Abstrakcije ima lahko tako abstraktne (metode brez telesa) kot tudi ne-abstraktne (metode s telesom)V vmesniku imamo lahko samo abstraktne metode. Od Java 8 ima lahko vmesnik tudi statične in privzete metode
SintaksaIzvleček razreda lahko razglasimo na naslednji način:
javna abstraktna razredna šola (Javni abstraktni razredi praznine ();
javna abstraktna void jakost ();)
Vmesnik je mogoče razglasiti na naslednji način:
oblika javnega vmesnika (Void draw_rect (); Void draw_square ();)
Končna spremenljivkaAbstraktni razred ima lahko končne in neskončne spremenljivke.Ker ima lahko vmesnik samo končne spremenljivke, saj so spremenljivke privzeto v vmesniku.
IzvajanjeAbstraktni razred lahko zagotavlja izvedbo vseh abstraktnih metod v vmesniku.Medtem ko v vmesniku ne moremo zagotoviti izvedbe abstraktnega razreda.
Spremenljiv tipAbstraktni razred lahko vse vrste spremenljivk, tj. Končne, neskončne, statične, nestatične, zasebne, javne itd.Ker ima lahko vmesnik samo javne, statične in končne spremenljivke.
Člani podatkov DostopnostAbstraktni razred ima lahko člane razreda kot zasebne, zaščitene, javne itd.Vmesnik ima lahko samo člane javnega razreda, saj so člani podatkov vmesnika privzeto javni.
Dediščina vs abstrakcijaAbstraktni razred se lahko razširi z uporabo ključne besede "extends" in potrebno je zagotoviti izvajanje vseh prijavljenih metod v nadrejenem razredu ali abstraktnem razreduVmesnik je mogoče uporabiti s ključno besedo "vmesnik" in zagotoviti uporabo vseh metod, prijavljenih v vmesniku
Večkratna izvedbaAbstraktni razred lahko razširi še en razred Java, ki izvaja več vmesnikovVmesnik lahko razširi samo drug vmesnik.
Kdaj uporabitiAbstraktni razred mora uporabiti, kadar morajo nekateri razredi deliti nekaj vrstic kode, potem jih lahko postavimo v abstraktni razred in razširimo po vseh povezanih razredih.Vmesnik lahko uporabimo, kadar moramo doseči več dedovanja, popolno abstrakcijo z izvajanjem vseh metod, ki jih v vmesniku prijavi razred, ki izvaja vmesnik.

Zaključek - Vmesnik Java proti razredu abstrakcij

Na koncu je pregled razlike med Java Interface in Abstraktnim razredom. Upam, da boste bolje razumeli te koncepte Java Interface vs Abstract Class. Glede na naše zahteve lahko uporabljamo oba Java Interface vs Abstract Class, samo vmesnik in samo abstraktni razred. Toda uporaba skupnih vmesnikov in abstraktnega razreda je najboljši pristop. Kadar mora razred deliti neko kodo, lahko to kodo umestimo v abstraktni razred in kadar je potrebno stanje predmeta, ga lahko dobimo z definiranjem nestatičnih ali neskončnih polj, potem lahko uporabimo abstraktni razred. Vmesnik lahko uporabljamo, kadar potrebujemo popolno abstrakcijo, večkratno dedovanje in ohlapno spajanje.

Priporočeni članek

To je vodilo za glavne razlike med Java Interface in Abstraktnim razredom. Tukaj razpravljamo tudi o glavnih razlikah Java Vmesnik in Abstraktni razred z infografiko in primerjalno tabelo. Ogledate si lahko tudi naslednje članke -

  1. Kako koristni so vprašanja o intervjuju in odgovori C #?
  2. 8 Uporabna primerjava-HTML5 vs Flash
  3. Java v primerjavi s C # - 8 Pomembne razlike
  4. Ruby proti vozlišču
  5. Primerjava HTML5 in JavaScript
  6. ArrayList vs Java Vector