Satura rādītājs
Šī ir apmācību sērijas otrā daļa, kas vērsta uz Java valodas pamattēmu pārskatīšanu, lai sagatavotu lasītāju pavasara ietvara izmantošanai. Šīs apmācību sērijas pirmo daļu var atrast šeit. Šajā apmācībā mēs runāsim par polimorfismu.Vārds polimorfisms cēlies no grieķu valodas "poli", kas nozīmē daudz, un "morpho", kas nozīmē formu, un kopumā uz to tas attiecas - spēja iegūt vairākas formas. Objektorientētā programmēšanā mēs runājam par mainīgajiem vai atsaucēm, kas var būt vairāku dažādu objektu formā.
Tagad, kad jūs zināt, no kurienes nāk šis jēdziens, mēģināsim to saistīt ar Java valodu. Kā redzējām iepriekšējā apmācībā, mantojuma jēdziens ļauj mums izveidot vecāku un bērnu attiecības starp 2 privātajām klasēm:
Šajā piemērā mantojuma attiecības ir starp klasi Suns un klase Dzīvnieks, klase Kaķis un klase Dzīvnieks un klase Zirgs un klase Dzīvnieks, ņemiet vērā, ka starp Suns, Kaķis Y Zirgs nav tiešas attiecības.
Izmantojot šo diagrammu par pamatu, mēs varam teikt, ka suns IR dzīvnieks, kaķis IR dzīvnieks, bet zirgs - dzīvnieks. Ja jūs varat šādā veidā izteikt attiecības Java, mēs varam teikt, ka klases mainīgais Dzīvnieks ir polimorfs, jo var izpausties kā a Zirgs, no a Kaķis vai a Suns.
Iepriekšējā apmācībā mēs arī redzējām, ka VISAS klases manto tieši vai netieši no klases Objekts, šajā gadījumā diagramma ir nedaudz pilnīgāka, ja to definējam šādi:
Un to var pagarināt vairākus līmeņus uz leju (būtībā līmeņa ierobežojums būs atkarīgs no jūsu JVM, bet parasti ir lielāks par 40). Tātad dzīvnieks ir objekts, kaķis ir dzīvnieks un kaķis (pēc pārejas) ir objekts.
Pēc tam Java ļauj izmantot klases atsauces šīs struktūras augstākajos punktos, lai norādītu uz objektiem zem tiem struktūrā. Piemēram:
public static void main (String [] args) {Objekts o1 = jauns Objekts (); Dzīvnieks a1 = jauns Dzīvnieks (); Suns p = jauns Suns (); o1 = a1; o1 = p; a1 = p; Objekts o2 = jauns Dzīvnieks (); Objekts o3 = jauns Suns (); Dzīvnieks a2 = jauns suns (); Būla b1 = o1 == o2; Būla b2 = o1 == o3; Būla b3 = o1 == a2; ja (b1 || b2 || b3) {DoNothing (); }}
Kā redzat, mainīgais objekts var attiekties uz dzīvnieku objektu vai suņa objektu tāpat kā mainīgais dzīvnieks uz suņa objektu. No tā izrietošā polimorfisma spēja liek mums manipulēt ar objektu, precīzi nezinot, kas ir objekts, apskatīsim šādu piemēra metodi:
public static void doSomething (Dzīvnieks a) {a.getColorDePelo (); }
Kad lietojumprogramma izmanto šo metodi, tā nezina, kuru dzīvnieku tas saņem pēc parametra, tas var būt suns, tas var būt kaķis, tas var būt zirgs vai vēlāk mols, zilonis, mandrils vai jebkura cita klase ir dzīvnieku tipa.
Šī rekvizīta atslēga ir tāda, ka tā ļauj programmai izmantot noteiktu apakšklašu metodes, konkrēti nezinot, kāda veida dzīvnieks tas ir, un tādējādi saglabāt ievērojamu abstrakcijas līmeni attiecībā uz turpmāko Dzīvnieku klases ieviešanu.
Nākamajā apmācībā mēs dziļāk iedziļināsimies polimorfisma tēmā, redzēsim, kas ir saskarnes un kā programmēt uz saskarnēm vērstu programmu, kas palīdzēs izprast šādas pamācības.
Tēma ir kļuvusi garāka, nekā gaidīju, bet nevajag izmisumā! Pirms atkarības injekcijas uzsākšanas ir svarīgi pareizi izprast šos jēdzienus, lai saprastu, kā darbojas pavasaris.
Es ceru, ka mēs turpināsim ar šīm apmācībām katru nedēļu, neaizmirstiet atstāt savus komentārus līdz nākamajai reizei!Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu