Kakšna je razlika med abstraktnim razredom in vmesnikom v Javi?



Ta članek vam bo s pomočjo primera programa pomagal razumeti ključno razliko med abstraktnim razredom in vmesnikom v javi.

Abstraktni razredi in vmesniki so dva glavna gradnikaod . Čeprav se oba v glavnem uporabljata za abstrakcijo, se med seboj zelo razlikujeta in ju ni mogoče uporabljati zamenljivo. V tem članku ugotovimo, kakšna je razlika med abstraktnim razredom in vmesnikom v Javi.

Teme, obravnavane v tem članku, so naslednje:





Da bi razumeli razlike med abstraktnim razredom in vmesnikom v , morate vedeti, kaj je abstraktni razred in kaj je vmesnik. Začnimo z razpravo o tem, kaj so to.

Kaj je abstraktni razred v Javi?

V katerem koli programskem jeziku, abstrakcija pomeni skrivanje nepomembnih podrobnosti pred uporabnikom, da se osredotoči le na bistvene podrobnosti, da poveča učinkovitost in s tem zmanjša zapletenost. V Javi se abstrakcija doseže z uporabo abstraktni razredi . Abstraktni razred zajema skupne značilnosti podrazredov in lahko vsebuje ali ne abstraktno metodo. Ni ga mogoče instancirati, lahko pa ga kot podrazred uporabljajo samo njegovi podrazredi. Tu je primer programa, ki prikazuje abstraktni razred:



Opomba: An abstraktna metoda , je metoda, ki ni izvedena in dodajanepopolnost do razred .

paket MyPackage // abstraktni razred abstraktni razred Animal {String AnimalName = '' Animal (ime niza) {this.AnimalName = name} // razglasi ne abstraktne metode // ima privzeto izvedbo public void BasicInfo (podrobnosti niza) {System. out.println (this.AnimalName + '' + podrobnosti)} // abstraktne metode, ki jih bomo // izvajali podrazredi (i) abstraktna javna praznina habitat () abstraktna javna praznina dihanje ()} razred Zemeljski razširja Žival {// konstruktor Zemeljsko (ime niza) {super (ime)} @Override public void habitat () {System.out.println ('leave on land and')} @Override public void respiration () {System.out.println ('respire skozi pljuča ali sapnik. ')}} razred Aquatic razširja Animal {// konstruktor Aquatic (ime niza) {super (ime)} @ Preglasi javni prazni habitat () {System.out.println (' Pusti v vodi in ') } @Override javno votlo dihanje () {System.out.println ('dihanje skozi škrge ali njihovo kožo.')}} Class AbstractClassDemo {public static voi d main (String [] args) {// ustvarjanje predmeta Objekt zemeljskega razreda // in uporaba referenc razreda Animal. Živalski objekt1 = novi prizemni ('Ljudje') objekt1.BasicInfo ('so kopenska bitja, oni') object1.habitat () object1.respiration () System.out.println ('') // ustvarjanje predmetov krožnega razreda Animal object2 = new Aquatic ('Fishes') object2.BasicInfo ('so vodna bitja, oni') object2.habitat () object2.respiration ()}}

Izhod

Ljudje smo kopenska bitja, ki odhajajo na kopno in se dihajo skozi pljuča ali sapnik. Ribe so vodna bitja, ki jih puščajo v vodi in se počutijo skozi škrge ali njihovo kožo.

The BasicInfo () je metoda v skupni rabi Kopenski in Vodni razredih. Od Razred živali ni mogoče sprožiti, ustvarjamo predmete Kopenski in Vodni razredi za namen programiranja. Nato imamo vmesnike.



Vmesnik v Javi

Drug način doseganja abstrakcija v Javi je z uporabo vmesniki .Vmesnik je zbirka abstraktnih metod in nima nobenega konkretnega , za razliko od abstraktnega razreda. Toda za razliko od abstraktnega razreda vmesnik zagotavlja popolno abstrakcijo v Javi. Lahko ima tako metode kot spremenljivke, tako kot razred. Vendar so metode, deklarirane v vmesniku, privzeto abstraktne.Tukaj je prikaz abstraktnega predavanja:

paket MyPackage vmesnik Živali {// abstraktne metode void habitat () void respiration ()} razred TerrestrialA izvaja Animals {String AnimalName = '' // konstruktor TerrestrialA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'dopust na kopnem in')} @ Preglasi javno votlo dihanje () {System.out.println ('dihanje skozi pljuča ali sapnik.')}} Razred AquaticA izvaja Živali {String AnimalName = '' // konstruktor AquaticA (ime niza) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Override javno votlo dihanje () {System.out.println ('dihanje skozi škrge ali njihovo preobleko.')}} Razred JavaInterfaceDemo {public static void main (String [] args) {// ustvarjanje predmeta zemeljskega razreda // in uporaba referenc razreda živali . Animals object1 = new TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // ustvarjanje predmetov krožnega razreda Animals object2 = new AquaticA ('Fishes') object2.habitat () object2.respiration ()}}

Izhod

Ljudje zapustijo kopno in se vdihnejo skozi pljuča ali sapnik. Ribe pustijo v vodi in se počutijo skozi škrge ali njihovo kožo.

Če med vašo kodo ni nobene skupne kode razredih , potem lahko uporabite vmesnik. Vmesnik je bolj podoben načrtu razreda, saj nima nobenih abstraktnih metod.

Iz zgornje vsebine ste morda opazili ključno razliko med abstraktnim razredom in vmesnikom v . Kar je za razliko od abstraktnega razreda vmesnik poln abstrakcija v Javi. Zdaj pa poglejmo še druge razlike.

Povzetek razreda vs vmesnik

Spodnja tabela navaja ključne razlike med abstraktnim razredom in vmesnikom.

Parameter Povzetek Vmesnik

Izvajanje privzete metode

Lahko ima privzeto izvedbo metode

Vmesniki zagotavljajo čisto abstrakcijo in sploh ne morejo biti implementirani

Spremenljivke

Lahko vsebuje nekončne spremenljivke.

Spremenljivke, prijavljene v vmesniku, so privzeto dokončne

Uporabljena ključna beseda

Abstraktni razred lahko razširimo s ključno besedo »extends

Vmesnik je treba implementirati z uporabo ključnih besed

Modifikatorji dostopa

Lahkoimajo javni, zaščiteni, zasebni in privzeti modifikator

Vmesniške metode so privzeto javne. z njim ne morete uporabiti nobenega drugega modifikatorja dostopa

Hitrost izvedbe

Je hitrejši od vmesnika

python __init__ razred

Vmesnik je nekoliko počasnejši in zahteva dodatno indirektnost

Običajni razred

Lahko razširi samo en abstraktni razred

Lahko izvaja več vmesnikov

Konstruktorji

Abstraktni razred ima lahko konstruktorje

Vmesnik ne more imeti konstruktorjev

Večkratno dedovanje

Abstraktni razred lahko razširi drug razred in lahko implementira več vmesnikov Java

Vmesnik lahko razširi samo še en vmesnik Java

No, zdaj ste ključne razlike med abstraktnim razredom in vmesnikom v Javi. Kako pa se odločite, kdaj boste uporabili katero izmed teh dveh?

Kdaj uporabiti abstraktni razred in kdaj uporabiti vmesnik?

Razmislite o uporabi abstraktnih razredov v naslednjih primerih:

  • Če imate nekaj sorodnih razredov, ki jih je treba deliti z iste vrstice kode
  • Ko želite določiti nestatična ali nekončna polja
  • Ko sometode ali poljaali zahtevajo modifikatorji dostopa razen javnih (na primer zaščitene in zasebne)

Razmislite o uporabi vmesnikov v naslednjih primerih:

  • Ko želite doseči čista abstrakcija
  • Če želite zaposliti večkraten , tj.implementirati več kot en vmesnik
  • Ko želite določiti vedenje določenega tipa podatkov, vendar vas ne skrbi, kdo izvaja njegovo vedenje.

To nas pripelje do konca tega članka. V intervjuju sem obravnaval eno najpogostejših vprašanj o Javi, kar je razlika med abstraktnim razredom in vmesnikom v Javi.

Poskrbite, da boste čim več vadili in si povrnili izkušnje.

Oglejte si Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, ki se širijo po vsem svetu. Tu smo, da vam pomagamo pri vsakem koraku na poti, saj smo poleg tega vprašanja za java intervjuji pripravili učni načrt, ki je zasnovan za študente in strokovnjake, ki želijo biti razvijalec Java.

Imate vprašanje za nas? Prosimo, omenite ga v oddelku za komentarje tega 'vmesnika java Map' članek in se vam bomo javili v najkrajšem možnem času.