Java / Spring - Nasljeđivanje, polimorfizam i ubrizgavanje ovisnosti - 2. dio

Sadržaj
Ovo je drugi dio niza vodiča usmjerenih na pregled osnovnih tema jezika Java kako bi čitatelja pripremili za korištenje Spring Framework -a. Prvi dio ove serije vodiča možete pronaći ovdje. U ovom vodiču govorit ćemo o polimorfizmu.
Riječ polimorfizam dolazi od grčkog "poly" što znači mnogo i "morpho" što znači oblik i općenito na to se odnosi, sposobnost poprimanja više oblika. U Objektno orijentiranom programiranju govorimo o varijablama ili referencama koje mogu imati oblik nekoliko različitih objekata.
Sada kada znate odakle koncept dolazi, pokušajmo ga povezati s Java jezikom. Kao što smo vidjeli u prethodnom vodiču, koncept "nasljeđivanja" omogućuje nam da uspostavimo odnos roditelj-dijete između 2 privatna razreda:
Slika je poslana
U ovom primjeru, odnos nasljeđivanja je između klase Pas i razred Životinja, razred Mačka i razred Životinja i razred Konj i razred Životinja, imajte na umu da između Pas, Mačka Y Konj nema izravne veze.
Koristeći ovaj dijagram kao osnovu, možemo reći da je pas životinja, mačka je životinja, a konj životinja. Kada možete izraziti odnos na taj način u Javi, možemo reći da je to varijabla klase Životinja polimorfna je jer može poprimiti oblik a Konj, od a Mačka ili a Pas.
U prethodnom smo vodiču također vidjeli da SVE klase nasljeđuju izravno ili neizravno od klase Objekt, u ovom slučaju dijagram je nešto potpuniji ako ga definiramo ovako:
Slika je poslana
I to se može proširiti više razina prema dolje (U biti će ograničenje razine ovisiti o vašem JVM -u, ali je obično iznad 40) Dakle, životinja je objekt, mačka je životinja i mačka (prema tranzitivnosti) je objekt.
Java vam tada omogućuje korištenje referenci klasa na visokim točkama u ovoj strukturi za pokazivanje objekata ispod njih u strukturi. Na primjer:
 public static void main (String [] args) {Object o1 = new Object (); Animal a1 = nova Animal (); Pas p = novi Pas (); o1 = a1; o1 = p; a1 = p; Objekt o2 = nova Animal (); Objekt o3 = novi pas (); Životinja a2 = novi pas (); boolean b1 = o1 == o2; boolean b2 = o1 == o3; boolean b3 = o1 == a2; if (b1 || b2 || b3) {DoNothing (); }} 

Kao što vidite, varijabla Object može se odnositi na objekt Animal ili objekt Dog, baš kao što se varijabla Animal može odnositi na objekt Dog. Kapacitet polimorfizma izveden iz ovoga dovodi nas do mogućnosti manipuliranja objektom bez potrebe da se točno zna koji objekt jest, pogledajmo sljedeću primjerenu metodu:
javna statička praznina doSomething (Životinja a) {a.getColorDePelo (); }

Kada aplikacija koristi ovu metodu, ne zna koju životinju prima po parametru, to može biti pas, može biti mačka, može biti konj ili kasnije krtica, slon, mandrill ili bilo koja druga klasa koja je životinjskog tipa.
Ključ ovog svojstva je u tome što dopušta programu da koristi metode određenih potklasa bez da zna točno o kojoj se vrsti životinje radi i na taj način održava značajnu razinu apstrakcije u odnosu na buduće implementacije klase Animal.
U sljedećem vodiču dublje ćemo se pozabaviti temom polimorfizma, vidjet ćemo koja su sučelja i kako programirati usmjerena na sučelja, što će pomoći u razumijevanju sljedećih vodiča.
Tema je postala nešto dulja nego što sam očekivao, ali nemojte očajavati! Važno je pravilno razumjeti ove koncepte prije nego što započnete ubrizgavanje ovisnosti kako biste razumjeli kako Spring funkcionira.
Nadam se da ćemo nastaviti s ovim vodičima iz tjedna u tjedan, ne zaboravite ostaviti svoje komentare do sljedećeg puta!Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave