Java / pavasaris - paveldėjimas, polimorfizmas ir priklausomybės injekcija - 2 dalis

Turinys
Tai yra antroji pamokų serijos dalis, skirta apžvelgti pagrindines „Java“ kalbos temas, kad skaitytojas būtų pasirengęs naudotis „Spring Framework“. Pirmąją šios pamokos serijos dalį galite rasti čia. Šioje pamokoje mes kalbėsime apie polimorfizmą.
Žodis polimorfizmas kilęs iš graikų kalbos „poli“, reiškiančio daug, ir „morfas“, reiškiantis formą, ir apskritai tai reiškia gebėjimą įgauti įvairias formas. Objektiniame programavime kalbame apie kintamuosius ar nuorodas, kurios gali būti kelių skirtingų objektų pavidalu.
Dabar, kai žinote, iš kur kilo ši sąvoka, pabandykime ją susieti su „Java“ kalba. Kaip matėme ankstesnėje pamokoje, „Paveldėjimo“ sąvoka leidžia užmegzti tėvų ir vaikų santykius tarp 2 privačių klasių:
Vaizdas išsiųstas
Šiame pavyzdyje paveldėjimo santykiai yra tarp klasės Šuo ir klasė Gyvūnas, klasė Katė ir klasė Gyvūnas ir klasė Arklys ir klasė Gyvūnas, atkreipkite dėmesį, kad tarp Šuo, Katė Y Arklys tiesioginio ryšio nėra.
Remdamiesi šia schema, galime pasakyti, kad šuo yra gyvūnas, katė yra gyvūnas, o arklys yra gyvūnas. Kai galite taip išreikšti ryšį „Java“, galime pasakyti, kad klasės kintamasis Gyvūnas yra polimorfinis, nes gali būti a formos Arklys, iš Katė arba a Šuo.
Ankstesnėje pamokoje taip pat matėme, kad VISOS klasės paveldi tiesiogiai ar netiesiogiai iš klasės Objektas, šiuo atveju diagrama yra šiek tiek išsamesnė, jei ją apibrėžiame taip:
Vaizdas išsiųstas
Ir tai galima išplėsti keliais lygiais žemyn (iš esmės lygio viršutinė riba priklausys nuo jūsų JVM, bet paprastai yra didesnė nei 40) Taigi gyvūnas yra objektas, katė yra gyvūnas, o katė (pagal tranzityvumą) yra objektas.
Tada „Java“ leidžia naudoti klasės nuorodas aukštuose šios struktūros taškuose, kad nukreiptų į objektus, esančius žemiau jų struktūroje. Pavyzdžiui:
 public static void main (String [] args) {Object o1 = new Object (); Gyvūnas a1 = naujas Gyvūnas (); Šuo p = naujas Šuo (); o1 = a1; o1 = p; a1 = p; Objektas o2 = naujas Gyvūnas (); Objektas o3 = naujas šuo (); Gyvūnas a2 = naujas šuo (); loginis b1 = o1 == o2; loginis b2 = o1 == o3; loginis b3 = o1 == a2; if (b1 || b2 || b3) {DoN Nothing (); }} 

Kaip matote, objekto kintamasis gali reikšti gyvūno ar šuns objektą, kaip kintamasis gyvūnas gali nurodyti šunų objektą. Iš to gaunamas polimorfizmo pajėgumas leidžia mums manipuliuoti objektu, tiksliai nežinant, kas tai yra, pažiūrėkime šį pavyzdinį metodą:
public static void doSomething (Gyvūnas a) {a.getColorDePelo (); }

Kai programa naudoja šį metodą, ji nežino, kurį gyvūną gauna pagal parametrą, tai gali būti šuo, katė, arklys ar vėliau kurmis, dramblys, mandrilis ar bet kuri kita klasė. yra Animal tipo.
Šios savybės esmė yra ta, kad ji leidžia programai naudoti tam tikrų poklasių metodus, tiksliai nežinant, koks tai Gyvūnas, ir tokiu būdu išlaikyti reikšmingą abstrakcijos lygį, atsižvelgiant į būsimus Gyvūnų klasės diegimus.
Kitoje pamokoje mes gilinsimės į polimorfizmo temą, pamatysime, kas yra sąsajos ir kaip programuoti, orientuotas į sąsajas, o tai padės suprasti šias pamokas.
Tema buvo šiek tiek ilgesnė, nei tikėjausi, bet nenusiminkite! Prieš pradedant priklausomybės injekciją, svarbu teisingai suprasti šias sąvokas, kad suprastumėte, kaip veikia pavasaris.
Tikiuosi, kad mes tęsime šias pamokas kiekvieną savaitę, nepamirškite palikti savo komentarų iki kito karto!Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave