Razlika med abstraktnim razredom in vmesnikom v Javi

Abstraktni razred in vmesnik se uporabljata predvsem za abstrakcijo, vendar se med seboj zelo razlikujeta. Oba sta jedro Jave, vendar imata svojo uporabo. Čeprav sta oba izraza sinonima drug za drugega, ju ni mogoče uporabljati zamenljivo.

Obstajajo velike razlike med obema. Medtem ko je metoda vmesnika privzeto abstraktna, lahko izvleček vsebuje tako abstraktne kot tudi ne-abstraktne metode. No, ker je Java 8, imajo vmesniki tudi izvedbe metod in v Javi imajo lahko tako statične kot privzete metode. Podrobneje preučimo razliko med obema.

Kaj je abstraktni razred na Javi?

Abstraktni razred v Javi je razred, ki je razglašen za abstraktni - lahko vsebuje ali ne vsebuje abstraktnih metod. Je precej podoben vmesniku Java, razen dejstva, da lahko vsebuje privzeto izvedbo metode. Tako kot pri objektno usmerjenem programiranju se tudi abstrakcija v Javi doseže z uporabo abstraktnih razredov in vmesnikov. V Javi abstrakcija pomeni skrivanje nepomembnih podrobnosti od uporabnika, da se osredotoči le na bistvene podrobnosti, da poveča učinkovitost in s tem zmanjša kompleksnost. Ključna beseda "abstrakt" se uporablja za ustvarjanje abstraktnega razreda tik pred ključno besedo razreda v deklaraciji razreda.

Abstraktni razred lahko vsebuje ali ne vsebuje metod abstrakcije (metode brez telesa), če pa ima razred vsaj eno metodo abstrakcije, ga je treba razglasiti za abstrakten. Neastraktne metode pa se lahko uporabljajo tudi samo v abstraktnem razredu, vendar le za izvajanje privzetega vedenja. Metode v abstraktnem razredu imajo lahko modifikatorje dostopa, kot so zasebni, javni, statični in zaščiteni, odvisno od stopnje vidnosti. Abstraktnega razreda ni mogoče izvesti in ne zagotavlja 100-odstotne abstrakcije zaradi dejstva, da ima lahko konkretno metodo.

Kaj je vmesnik?

Čeprav je vmesnik videti kot razred, ni. Ker Java ne podpira več dedovanja, je včasih vmesnik idealen za zagotavljanje baze za hierarhijo razredov. Vmesnik je bolj osnutek razreda, ki se uporablja tudi za doseganje abstrakcije na Javi. Vsebuje abstraktne metode in statične konstante. Preprosto povedano, vmesnik je zbirka abstraktnih metod, ki se uporabljajo za določanje vedenja, ki ga mora razred izvajati. Za razliko od abstraktnega razreda vmesnik zagotavlja popolno abstrakcijo v Javi. Lahko ima tako metode kot spremenljivke, kot razred, vendar so metode, prijavljene v vmesniku, privzeto abstraktne.

Razlika med abstraktnim razredom in vmesnikom v Javi

  1. “Večkratna dedovanje” abstraktnega razreda in vmesnika na Javi - Kljub temu, da se abstraktni razred in vmesnik uporabljata predvsem za abstrakcijo, se med seboj precej razlikujeta. Medtem ko je abstraktni razred razred, je vmesnik vmesnik. To pomeni, da lahko vmesnik podaljša samo še en vmesnik Java, vendar lahko abstraktni razred v Javi izvede več podedovanj. No, Java ne podpira več dedovanja, vendar lahko v Javi implementiramo več podedovanj.
  2. “Način metode” abstraktnega razreda in vmesnika v Javi - Druga velika razlika med obema je, da ima lahko vmesnik samo abstraktne metode, vendar ima abstraktni razred abstraktne in ne-abstraktne metode. Ker pa Java 8 ima lahko vmesnik tudi privzete in statične metode.
  3. "Modifikatorji dostopa" do abstraktnega razreda in vmesnika v Javi - Abstraktni razred ima lahko javne, zasebne in zaščitene modifikatorje dostopa, vendar so metode vmesnika implicitno javne in abstraktne. Ne morete uporabljati nobenega drugega modifikatorja dostopa z metodami vmesnikov. ".
  4. "Implementacija" abstraktnih razredov in vmesnikov v Javi - Izvleček razreda lahko zagotavlja izvedbo vmesnika. Po drugi strani vmesnik ne more zagotoviti izvedbe abstraktnega razreda.
  5. "Ključna beseda" abstraktnega razreda in vmesnika v Javi- Čeprav se za razglasitev abstraktne metode razreda kot abstraktne uporablja ključna beseda "abstraktna", so vmesniki povsem drugačna zgodba; lahko imajo samo javne, statične končne konstante in deklaracije metod.
  6. “Uporaba” abstraktnega razreda in vmesnika v Javi - Medtem ko je vmesnik idealen za deklaracijo tipa, je abstraktni razred najbolj primeren za ponovno uporabo kode in perspektivo evolucije. Vmesnik je videti kot razred, vendar ni razred.
  7. "Zanesljivost" abstraktnega razreda in vmesnika v Javi- Druga velika razlika med abstraktnim razredom in vmesnikom je ta, da je prvi nekoliko hitrejši od drugega, ker je iskanje običajno vključeno v vmesnik, preden se v Javi prikliče katera koli prepisana metoda.
  8. "Končne spremenljivke" abstraktnega razreda in vmesnika v Javi - Spremenljivke, deklarirane v vmesniku, so privzeto končne, abstraktni razred pa lahko vsebuje ali ne končne spremenljivke.

Izvleček razreda vmesnik v Java: primerjalna tabela

Izvleček razreda Vmesnik
Abstraktna ključna beseda se uporablja za ustvarjanje abstraktnega razreda in se lahko uporablja z metodami. Za izdelavo vmesnika se uporablja ključna beseda vmesnika, vendar je ni mogoče uporabiti z metodami.
Razred lahko razširi samo en abstraktni razred. Razred lahko implementira več kot en vmesnik.
Abstraktni razred ima lahko abstraktne in ne-abstraktne metode. Vmesnik ima lahko samo abstraktne metode.
Spremenljivke privzeto niso končne. Lahko vsebuje neskončne spremenljivke. Spremenljivke so privzeto vmesnik.
Izvleček razreda lahko zagotavlja izvedbo vmesnika. Vmesnik ne more zagotoviti izvedbe abstraktnega razreda.
Lahko ima metode z izvedbami. Omogoča absolutno abstrakcijo in ne more imeti izvedb metod.
Lahko ima javne, zasebne, statične in zaščitene modifikatorje dostopa. Metode so v vmesniku Java implicitno javne in abstraktne.
Ne podpira več dedovanja. Podpira več dedovanja.
Idealen je za ponovno uporabo kode in evolucijsko perspektivo. Idealen je za deklaracijo tipa.

Povzetek točk abstraktnega razreda in vmesnika v Javi

Za abstrakcijo se uporabljata abstraktni razred in vmesnik; vendar imajo svoj pravičen delež razlik. Glavno razliko med njima poganjajo metode abstrakcije. Medtem ko prvi imajo ali ne smejo imeti abstraktnih metod, so drugi implicitno abstraktni. Abstraktni razred ima lahko abstraktne in ne-abstraktne metode. Nasprotno pa ima lahko vmesnik samo abstraktne metode, torej ne more imeti implementacije, kar preprosto pomeni, da vmesnik ne more imeti neastraktnih metod. Abstraktnega razreda ni mogoče instancirati, kar prepoveduje ustvarjanje predmeta. Po drugi strani je vmesnik morda videti kot razred, vendar ni.