Erinevused Java liidese ja abstraktse klassi vahel

Liides täpsustab, mida klass peab tegema, kuid mitte kuidas. Põhimõtteliselt on see klassi plaan. Liideses deklareeritud muutujad on avalikud, staatilised ja vaikimisi lõplikud. Klassi, mida deklareeritakse märksõnaga „abstraktne“, nimetatakse abstraktseks klassiks A-klass, mis on tuletatud abstraktsest klassist, peab määratlema kõik abstraktses klassis abstraktseks kuulutatud meetodid.

Mis on liides?

Liides on nagu klass, kuid see ei oma klassidena meetodeid ja muutujaid, kuid liideses deklareeritud meetodid on vaikimisi abstraktsed. Täieliku abstraktsiooni saamiseks kasutatakse liidest, kuna liideste meetoditel puudub põhiosa. Seega peab klass neid enne neile juurde pääsemist rakendama. Üldiselt peab liidest rakendav klass määratlema kõik liideses deklareeritud meetodid, kui seda pole, siis tuleb klass kuulutada abstraktseks. Me ei saa liidest laiendada rohkem kui ühele klassile, kuna Java seda ei luba. Liidese deklareerimiseks peame kasutama liidese märksõna ja liidese rakendamiseks peame kasutama tööriistade märksõna.

Mis on abstrakt?

Klassi, mida kuulutatakse märksõnaga „abstraktne“, nimetatakse abstraktseks klassiks. Abstraktsel klassil võivad erinevalt tavalisest klassist olla abstraktsed (meetod ilma kehata) ja konkreetsed meetodid (meetod kehaga). Abstraktset klassi ei saa kiirendada, st me ei saa selle jaoks objekti luua, kuid meil võib olla viiteid abstraktsele klassile, luues uue klassi, mis laiendab abstraktset klassi ja pakub meetodeid. Me võime kasutada abstraktsete ja tavaliste meetodite kutsumiseks lapse eset (mis on äsja loodud). Sellel võivad olla konstruktorid ja abstraktse klassi kutsutakse siis, kui luuakse päritud klassi eksemplar. Java-s võib meil olla abstraktne klass ilma abstraktse märksõnata, kuid neid klasse ei saa realiseerida, nad võivad olla ainult päritavad ja neil võivad olla ka lõplikud meetodid.

Java-liidese ja abstraktse klassi (Infographics) võrdlus ühest otsast teise

Allpool on 9 parimat võrdlust Java-liidese ja abstraktse klassi vahel

Java liidese ja abstraktse klassi peamised erinevused

Mõlemad Java liides vs abstraktne klass on turul populaarsed valikud; arutame mõnda peamist erinevust Java liidese ja abstraktse klassi vahel:

  • Liidest saab kasutada mitme pärimise ja lahtise sidumise saavutamiseks, mida me abstraktse klassi abil ei suuda saavutada.
  • Liides, mida kasutatakse täieliku abstraktsiooni saavutamiseks, samas kui abstraktne klass võib saavutada osalise abstraktsiooni.
  • Abstraktne klass laiendab korraga ainult ühte tavalist klassi või abstraktset klassi, samas kui liides võib korraga laiendada suvalist arvu liideseid.
  • Abstraktne klass laiendab teist abstraktset või tavalist klassi, liides võib laiendada ainult teist Java-liidest.
  • Abstraktses klassis peame deklareerima meetodid, kasutades märksõna „abstraktne”, samas kui liideses võime deklareerida meetodeid koos „abstraktse” märksõnaga või ilma.
  • Liidesel võib olla ainult abstraktseid meetodeid, samas kui abstraktsel klassil võivad olla nii abstraktsed kui ka tavalised klassid.
  • Abstraktsel klassil võivad olla erinevad muutujad, näiteks staatilised, lõplikud, mitte lõplikud, mitte staatilised, avalikud, privaatsed jne, samas kui liidesel võivad olla ainult avalikud, staatilised ja lõplikud muutujad.
  • Abstraktse klassi ja selle meetodeid saab luua märksõnaga “abstraktne”, liidese loomiseks kasutatakse liidese märksõna, kuid mitte meetodeid.
  • Abstraktsel klassil võivad olla konstruktorid, samas kui liidesel pole konstruktorit.
  • Abstraktset klassi kasutatakse alamklassi lepingu määratlemiseks, meetodi rakendamist, samas kui alamklasside lepingu määratlemiseks kasutatakse liidest.
  • Liides võib laiendada ainult teisi Java-liideseid, samas kui abstraktne klass võib laiendada muud klassi ja rakendada ka liidest.
  • Klass, mis laiendab abstraktset klassi, kasutades laiendatud märksõna, peab rakendama kõik abstraktses klassis deklareeritud meetodid, välja arvatud juhul, kui klass on ka abstraktne klass, samas kui klass, mis realiseerib liidest märksõna abil, pakub ka kõigi liideses deklareeritud meetodite rakendamist.

Võrdlustabel Java liides vs abstraktne klass

Järgnevalt on toodud Java-liidese ja abstraktse klassi võrdlustabel

Java-liidese ja abstraktse klassi võrdlusalusedAbstraktne klassJava liides
Meetodi tüüpAbstraktsel klassil võivad olla nii abstraktsed (meetodid kehata) kui ka mitteabstraktsed (meetodid kehaga)Liideses saame kasutada ainult abstraktseid meetodeid. Java 8-st alates võib liidesel olla ka staatilisi ja vaikimisi meetodeid
SüntaksAbstraktse klassi võib kuulutada järgmiselt:
avalik abstraktsete klasside kool (Avalikud abstraktsed klassid ();
avalik abstraktne tühine jõud ();)
Liidese saab deklareerida järgmiselt:
avaliku liidese kuju (Void draw_rect (); Void draw_square ();)
Lõplik muutujaAbstraktsel klassil võivad olla nii lõplikud kui ka mitte lõplikud muutujad.Liidesel võib olla ainult lõplikke muutujaid, kuna muutujad on liideses vaikimisi lõplikud.
RakendamineAbstraktne klass pakub liideses kõigi abstraktsete meetodite rakendamist.Arvestades, et liideses ei saa me pakkuda abstraktse klassi rakendamist.
Muutuja tüüpAbstraktne klass võib igat tüüpi muutujaid, st lõplikku, mitte lõplikku, staatilist, mitte staatilist, privaatset, avalikku jne.Liidesel võivad olla ainult avalikud, staatilised ja lõplikud muutujad.
Andmeliikmete ligipääsetavusAbstraktses klassis võivad klassiliikmed olla era-, kaitstud, avalikud jne.Liidesel võivad olla ainult avaliku klassi liikmed, kuna liidese andmeliikmed on vaikimisi avalikud.
Pärimine vs abstraktsioonAbstraktset klassi saab laiendada, kasutades märksõna „laiendab“ ja see peab tagama kõigi deklareeritud meetodite rakendamise vanemklassis või abstraktses klassisLiidest saab rakendada märksõnaga “liides” ja see peab tagama kõigi liideses deklareeritud meetodite rakendamise
Mitu rakendamistAbstraktne klass võib laiendada mõnda muud Java klassi, rakendades mitut liidestLiides võib laiendada ainult teist liidest.
Millal kasutadaAbstraktset klassi tuleb kasutada juhul, kui mõned klassid peavad jagama paar koodirida, siis saame selle koodi panna abstraktsesse klassi ja laiendada kõigi seotud klasside kaupa.Liidest saab kasutada siis, kui peame saavutama mitu pärandit ja täielikku abstraktsiooni, rakendades kõik liidese poolt deklareeritud meetodid liidese rakendava klassi poolt.

Järeldus - Java liides vs abstraktne klass

Lõpuks on see ülevaade erinevusest Java liidese ja abstraktse klassi vahel. Loodan, et saate neist Java-liidese vs abstraktse klassi mõistetest paremini aru. Oma nõudmistest lähtuvalt võime kasutada koos Java liidese vs abstraktse klassi, ainult liidese ja ainult abstraktse klassi. Kuid liideste ja abstraktse klassi koos kasutamine on parim lähenemisviis kujundamiseks. Kui klass peab jagama mõnda koodi, siis võime selle koodi paigutada abstraktsesse klassi ja kui on vaja objekti olekut, saame selle määratleda mittestaatiliste või mitte lõplike väljade abil, siis võime kasutada abstraktset klassi. Liidest saab kasutada siis, kui vajame täielikku abstraktsiooni, mitut pärimist ja lahtist sidumist.

Soovitatav artikkel

See on juhend Java Interface vs Abstract Class peamiste erinevuste kohta. Siin käsitleme ka Java-liidese vs abstraktse klassi peamisi erinevusi infograafikaga ja võrdlustabelit. Võite vaadata ka järgmisi artikleid -

  1. Kui kasulik on C # intervjuu küsimused ja vastused?
  2. 8 Kasulik võrdlus-HTML5 vs Flash
  3. Java vs C # - 8 olulist erinevust
  4. Rubiin vs sõlm
  5. HTML5 vs JavaScripti võrdlus
  6. ArrayList vs Java Vector

Kategooria: