Erinevus Java-liidese ja abstraktse klassi vahel

Peamised erinevused: liides või protokoll on tavaline viis, mis võimaldab omavahel omavahel suhelda. See kujutab endast kokkulepitud käitumist, mis hõlbustab kahe objekti vahelist suhtlemist. Abstraktseks klassiks on objektide klass, mida ei saa esile tuua või objekti eksemplari luua. Sellel klassil ei pruugi olla mingit rakendust või selle rakendamine võib olla puudulik.

Java, C + +, C # on kõik keerulised programmeerimiskeeled, mis vajavad töötamiseks üksikasjalikku uurimist ja mõistmist. Neis keeltes on palju erinevaid meetodeid, mis otsustavad, kuidas keel toimib. Interface ja Abstract Class on kaks segavat kontseptsiooni, mis on osa OOP-st (objekt-orienteeritud programmeerimine). Neid kahte saab kasutada eraldi või koos. Need kaks on teineteisest täiesti erinevad ja neid kasutatakse erinevatel juhtudel.

Java on programmeerimiskeel, mida on mõjutanud C keel. See tekitab palju oma süntaksist C- ja C ++ -st, kuid sellel on vähem madalama taseme võimalusi. Java on üldotstarbeline programmeerimiskeel, mis on mõeldud vähem rakendusvõimalusi võrreldes eelmiste keeletega. See on samaaegne, klassipõhine ja objektorienteeritud keel.

Java töötati välja James Goslingis Sun Microsystems'is ja see ilmus 1995. aastal. See avaldati algselt Sun Microsystemsi Java platvormi põhikomponendina. Sun on sellest ajast alates litsentseerinud enamiku oma Java-tehnoloogiatest GNU üldise avaliku litsentsi alusel. See tähendab, et kogu GNU General Public License litsentsitud tehnoloogia on avatud lähtekoodiga ja üldjuhul tasuta. Sun Microsystems liitus lõpuks Oracle Corporationiga. Alates 2012. aastast on Java muutunud üheks kõige populaarsemaks programmeerimiskeeleks. See kehtib eriti kliendi-serveri veebirakenduste kohta. Paljud teised süsteemid on välja töötanud Suni tehnoloogiate alternatiivsed rakendused, nagu näiteks GNU Compiler Java ja GNU Classpath.

Liides või protokoll on tavaline viis, mis võimaldab omavahel omavahel suhelda. See kujutab endast kokkulepitud käitumist, mis hõlbustab kahe objekti vahelist suhtlemist. Liides omab võtme mitmesuguste rakendatavate tegevuste jaoks ja toimib seose kahe erineva objekti vahel. Kui objektirühm on liidesega kokku puutunud, peab klass järgima liidese poolt rakendatud käitumist. Tavaliselt sisaldavad liidesed ainult pidevaid deklaratsioone ja meetodi allkirju. Iga liides, mis rakendab konkreetset liidest, peab rakendama kõiki liideses mainitud meetodeid või olema deklareeritud abstraktsete klassidena. Java puhul võib iga objekti määratleda kui liidest, kui see objekt on tühi või omab klassi, milles ta rakendab seda konkreetset liidest. Rakenduse märksõnade abil saab Java-klassi ühe liigi jaoks rakendada mitmeid liideseid.

Abstraktseks klassiks on objektide klass, mida ei saa esile tuua või objekti eksemplari luua. Sellel klassil ei pruugi olla mingit rakendust või selle rakendamine võib olla puudulik. Samuti võib sellel olla abstraktsed meetodid või omadused, mida jagavad kõik alamklassid. Mõnes programmeerimiskeeles on rakendusteta abstraktsed tüübid tuntud kui liidesed. Java-is saab luua abstraktse tüübi, kasutades klassi määratluses märksõna „abstraktne”. Abstraktse klassi eesmärgiks on paigutada kõik abstraktses klassis rakendamata meetodid ja jätta see alamklassile, et määrata kindlaks, kuidas neid klasse rakendada. Kui klassil on üks abstraktne meetod, tuleb klassi deklareerida abstraktsena klassi, kuigi klassi abstraktse deklareerimiseks ei ole vaja vähemalt ühte meetodit.

Malliktalksjava.in loetleb peamised erinevused liidese ja abstraktse vahel:

  • Abstraktsel klassil on konstruktor, kuid liides ei ole.
  • Abstraktsed klassid võivad mõnedele oma liikmetele rakendada rakendusi (meetodid), kuid liidesel ei saa olla rakendusi ühegi selle liikme jaoks.
  • Abstraktsetel klassidel peaks olema veel alaklassid, mis on kasutud.
  • Liidesed peavad kasutama teisi klasse, mis on kasutud
  • Ainult liides võib laiendada teist liidest, kuid iga klass võib laiendada abstraktset klassi.
  • Kõik liideses olevad muutujad on vaikimisi lõplikud
  • Liidesed pakuvad mitmekordse pärimise vormi. Klass võib laiendada ainult ühte teist klassi.
  • Liidesed piirduvad avalik-õiguslike meetodite ja konstantidega ilma rakendamiseta. Abstraktsetel klassidel võib olla osaline rakendamine, kaitstud osad, staatilised meetodid jne.
  • Klass võib rakendada mitmeid liideseid. Abstraktse klassi puhul võib klass siiski ainult ühe abstraktse klassi.
  • Liidesed on aeglased, kuna see nõuab täiendavat kaudset sobivat meetodit vastava klassi leidmiseks. Abstract klassid on kiire.
  • Abikõlblikkuse muutja (avalik / era- / sisemine) on abstraktse klassi jaoks lubatud. Liides ei võimalda juurdepääsetavuse muutjat
  • Abstraktne klass võib sisaldada täielikke või mittetäielikke meetodeid. Liidesed võivad sisaldada ainult meetodi allkirja, kuid mitte keha. Seega saab abstraktse klassi rakendada meetodeid, kuid liides ei saa rakendada meetodeid.
  • Abstraktne klass võib sisaldada välju, konstruktoreid või destruktoreid ja rakenduse omadusi. Liides ei saa sisaldada väljad, konstruktoreid või destruktoreid ja tal on ainult vara allkiri, kuid selle rakendamine puudub.
  • Abstraktsetes klassides on kasulikud mitmesugused juurdepääsu modifikaatorid nagu abstraktne, kaitstud, sisemine, avalik, virtuaalne jne, kuid mitte liidesed.
  • Abstraktne ulatus on kuni tuletatud klassi.
  • Liidese ulatus on kuni pärandahela mis tahes tasemeni.

Tabeli andmed on codeproject.com ja mindprod.com viisakalt

Liides

Abstraktne klass

Mitmekordne pärimine

Klass võib pärida mitu liidest.

Klass võib pärida ainult ühe abstraktse klassi.

Vaikimisi rakendamine

Liides ei saa anda koodi, vaid allkirja.

Abstraktne klass võib pakkuda täielikku, vaikekoodi ja / või lihtsalt üksikasju, mida tuleb ületada.

Juurdepääsu muutjad

Liidesel ei saa olla juurdepääsu modifikaatoreid, funktsioone, omadusi jne.

Abstraktne klass võib sisaldada juurdepääsu modifikaatoreid, funktsioone, omadusi.

Core vs. Peripheral

Liideseid kasutatakse klassi perifeeriliste võimete määratlemiseks. Teisisõnu võib nii inimene kui ka sõiduk pärida IMovable liidesest.

Abstraktne klass määratleb klassi põhitunnuse ja seda kasutatakse sama tüüpi objektide jaoks.

Homogeensus

Kui erinevad rakendused jagavad vaid allkirja meetodeid, siis on parem kasutada liideseid.

Kui erinevad rakendused on samalaadsed ja kasutavad ühist käitumist või staatust, siis on parem kasutada abstraktset klassi.

Kiirus

Vajab rohkem aega tegeliku meetodi leidmiseks vastavatesse klassidesse.

Kiire

Funktsioonide lisamine

Kui lisame liidese jaoks uue meetodi, peame leidma kõik liidese rakendused ja määratlema uue meetodi rakendamise.

Kui me lisame abstraktsele klassile uue meetodi, siis on meil võimalus pakkuda vaikimisi rakendamist ja seetõttu võib kogu olemasolev kood korralikult töötada.

Väljad ja konstantid

Liideseid ei saa määratleda.

Abstraktsel klassil võivad olla väljad ja konstandid.

Piinavus

Pidev deklaratsioon liideses on kõik eeldatav avalik staatiline lõplik.

Jagatud koodi saab lisada abstraktsesse klassi.

Konstantid

Ainult staatilised lõplikud konstandid võivad neid kasutada ilma kvalifikatsioonita klassides, mis rakendavad liidest.

Võimalikud on nii eksemplari kui ka staatilised konstandid. Konstantide arvutamiseks on samuti võimalik kasutada nii staatilist kui ka näiteks intialiseerijat.

Kolmanda osapoole mugavus

Igale olemasolevale kolmanda osapoole klassile võib lisada liidese rakendamise.

Kolmanda osapoole klass tuleb ümber kirjutada, et see laieneks ainult abstraktsele klassile.

on -mõistetav või võimeline

Liideseid kasutatakse sageli klassi perifeersete võimete kirjeldamiseks, mitte selle keskseks identiteediks, nt Automobile klass võib rakendada ümbertöödeldavat liidest, mida võiks kohaldada paljude muidu täiesti sõltumatute objektide suhtes.

Abstraktne klass määratleb selle järeltulijate identiteedi. Rakendatud liidesed loendavad üldisi asju, mida klass saab teha, mitte asju, mida klass on.

Java kontekstis peaksid kasutajad tavaliselt rakendama jooksva liidese asemel Threadi pikendamist, sest nad ei ole tõesti huvitatud mõne uue Thread-funktsiooni pakkumisest, nad soovivad tavaliselt, et mõnel koodil oleks võimalus töötada iseseisvalt. Nad tahavad luua midagi, mida saab lõimida, mitte uut tüüpi niit. Sarnane is-a vs. has-a arutelu ilmub siis, kui otsustate pärida või delegeerida.

Sisse panema

Kasutaja saab kirjutada uue asendusmooduli liidese jaoks, mis ei sisalda ühte olemasolevat rakendust sisaldavat koodi. Kui kasutaja rakendab liideseid, algavad nad nullist ilma vaikimisi rakendamiseta. Kasutaja peab hankima tööriistu teistest klassidest; miski ei sisalda muud liidest peale mõne konstandi. See annab kasutajale vabaduse rakendada radikaalselt erinevat sisemist disaini.

Kasutaja peab kasutama abstraktset klassi, kui see on koodibaasi jaoks, koos kõigi kaasnevate pagasitega, hea või halb. Abstraktse klassi autor on kasutajale üles ehitanud struktuuri.

Hooldus

Kui kliendikood räägib ainult liidese seisukohast, saate selle taga asuvat konkreetset rakendust lihtsalt tehase meetodil muuta.

Kui kliendikood räägib ainult abstraktsest klassist, saate selle taga oleva konkreetse rakenduse kergesti muuta, kasutades tehase meetodit.

Soovitatav

Seotud Artiklid

  • populaarsed võrdlused: Legendi ja ikooni erinevus

    Legendi ja ikooni erinevus

    Peamised erinevused: Legend ja ikoon on kaks peamist mõistet, mida kasutatakse isiku jaoks, kes on kuulus oma erakordsete omaduste või talendi poolest. Legend on tavaliselt seotud inimestega, kes on oma kuulsust või võlu väga pikka aega toetanud. Samas kasutatakse ikooni üldjuhul isikule, kes on omandanud palju kuulsust, eriti konkreetses valdkonnas, ning isik ise muutub väljade, stiili jne kujutiseks, milles ta on oma väärtust tõestanud. Legend o
  • populaarsed võrdlused: Erinevus mai ja mai vahel

    Erinevus mai ja mai vahel

    Peamised erinevused: kasutatakse üldjuhul kavandatud sätte väljendamiseks pakkumiste või ettepanekute vormis. Teisest küljest võib üldjuhul kasutada võimalust või luba. Seda kasutatakse ka soovi või lootuse tähistamiseks. Seda peetakse formaalsemaks kui võib. Samuti on see suhteliselt vanamoodne. Mõlemat ka
  • populaarsed võrdlused: Erinevus unistuse ja tegelikkuse vahel

    Erinevus unistuse ja tegelikkuse vahel

    Peamine erinevus : unenägu võib defineerida kui une ajal esinevaid pilte, sündmusi ja tundeid. Reaalsus on asjade eksistentsiaalne seisund ilma igasuguse kujutlusvõime või tõlgendamiseta. Unistused on tõepoolest osutunud huvitavaks teemaks teadlaste jaoks. Kuna unenäo nähtus kuulub teaduse pädevusse, on mitmed teadlased, psühholoogid või ainealased eksperdid püüdnud dekodeerida seda, mida tegelikult unistused tähendavad. Mõnede teoori
  • populaarsed võrdlused: Senati ja maja erinevus

    Senati ja maja erinevus

    Peamised erinevused: Kongress on föderaalvalitsuse kahekojaline seadusandja. Seadusandja on sisuliselt valitsuse otsustusorgan. Tal on õigus luua, vastu võtta, muuta ja tühistada seadusi. Kongressi struktuur on jagatud kaheks osaks: Senat ja Esindajatekoda. Senat on kongressi ülemine maja, samas kui esinduskoda on alumine maja. Ame
  • populaarsed võrdlused: Erinevus duši ja ujumise vahel

    Erinevus duši ja ujumise vahel

    Peamised erinevused: dušš ja suplemine on mõlemad seotud keha puhastamisega. Dušš kasutab dušiotsikut, mis pihustab vett. Teisest küljest seostatakse suplemine veega täidetud muude vannidega või mis tahes muu vesilahusega, kus inimene keha alla paneb ja seejärel loputab keha selle puhastamiseks. Inimesed
  • populaarsed võrdlused: Alumiiniumi ja terase erinevus

    Alumiiniumi ja terase erinevus

    Peamised erinevused: Alumiinium on Maa koorikus leiduv element. Alumiinium on pehme, vastupidav, kerge, mittemagnetiline ja plastiline ning kuna see on puhtal kujul väga reaktiivne, kombineeritakse seda enam kui 270 erineva mineraaliga, kõige sagedamini boksiidiga. Teras on sulam, mis tähendab, et tegemist on kahe metallilise elemendi või ühe metallilise ja mittemetallilise elemendi seguga. Kõi
  • populaarsed võrdlused: Erinevus Vaatamata ja Inspiteeritud

    Erinevus Vaatamata ja Inspiteeritud

    Peamine erinevus: sõnad „vaatamata” ja „hoolimata” on kontrastiid väljendavad eessõnad. Mõistet „vaatamata” kasutatakse sageli inglise keeles ja mõnikord peetakse seda ka sünonüümiks „vaatamata”. Nii ingliskeelseid nimesid kasutavad nii "vaatamata" kui ka "vaatamata" nimed, see, mis jne, või koos verbiga "-ing" vormis. Sõna „vaatamata” tähend
  • populaarsed võrdlused: Erinevus ühe- ja kahekordse tuuma vahel

    Erinevus ühe- ja kahekordse tuuma vahel

    Peamised erinevused: Ühe südamikuga protsessoril on ainult üks südamik, mis tähendab, et see võib käivitada ainult ühe operatsiooni korraga. Kahetuumaline protsessor on keskprotsessorite (CPU) tüüp, millel on kaks täielikku teostusmoodulit. Kahekordne südamik on muutunud Intel Pentium Dual Core'i sünonüümiks. Arvutid on ne
  • populaarsed võrdlused: Roolivõimendi ja elektroonilise roolivõimendi vaheline erinevus

    Roolivõimendi ja elektroonilise roolivõimendi vaheline erinevus

    Peamised erinevused: Roolivõimendi on süsteem, mis aitab rataste juhtimisel kasutada mõnda lisavõimsusvõrku. Elektrooniline roolivõimendi on ka roolivõimendi, mis kasutab elektrimootorit ja mõningate anduritega juhtimisseadet. Roolivõimendi on süsteem, mis aitab ratastel juhtida mõnda energiaallikat. Juhtimine

Toimetaja Valik

Erinevus FBI ja CIA vahel

Erinevus: Föderaalne Uurimisbüroo (FBI) on valitsusasutus, mis töötab Ameerika Ühendriikide justiitsministeeriumi all. Keskne luureagentuur (CIA) on Ameerika Ühendriikide sõltumatu tsiviilluure luureagentuur, kes vastutab riigi julgeoleku alase luure tagamise eest USA poliitikakujundajatele. FBI ja CIA organisatsioonid on muutunud ülemaailmseteks tänu nendel põhinevatele filmidele ja näitustele. Filmid on