Java / Spring - Moștenire, polimorfism și injecție de dependență - Partea 2

Cuprins
Aceasta este a doua parte a unei serii de tutoriale axate pe revizuirea subiectelor de bază ale limbajului Java pentru a pregăti cititorul în utilizarea Spring Framework. Prima parte a acestei serii de tutoriale o puteți găsi aici. În acest tutorial vom vorbi despre polimorfism.
Cuvântul polimorfism provine din grecescul "poly" care înseamnă mulți și "morpho" care înseamnă formă și, în general, la asta se referă, abilitatea de a lua forme multiple. În programarea orientată pe obiecte vorbim despre variabile sau referințe care pot lua forma mai multor obiecte diferite.
Acum, că știi de unde vine conceptul, să încercăm să-l raportăm la limbajul Java. După cum am văzut în tutorialul anterior, conceptul de „Moștenire” ne permite să stabilim o relație părinte-copil între 2 clase private:
Imagine trimisă
În acest exemplu, relația de moștenire este între clasă Câine și clasa Animal, clasa Pisică și clasa Animal și clasa Cal și clasa Animal, rețineți că între Câine, Pisică Da Cal nu există o relație directă.
Folosind această diagramă ca bază, putem spune că un câine este un animal, o pisică este un animal și un cal este un animal. Când puteți exprima relația astfel în Java, putem spune că o variabilă a clasei Animal este polimorf, deoarece poate lua forma unui Cal, a Pisică sau a Câine.
În tutorialul anterior am văzut, de asemenea, că TOATE clasele moștenesc direct sau indirect de la clasă Obiect, în acest caz diagrama este puțin mai completă dacă o definim astfel:
Imagine trimisă
Și aceasta poate fi extinsă la mai multe niveluri (în esență, limita de nivel va depinde de JVM, dar este în mod normal peste 40) Deci, un animal este un obiect, o pisică este un animal și o pisică (prin tranzitivitate) este un obiect.
Java vă permite apoi să utilizați referințe de clasă în punctele culminante ale acestei structuri pentru a indica obiectele de sub ele din structură. De exemplu:
 public static void main (String [] args) {Object o1 = new Object (); Animal a1 = animal nou (); Dog p = new Dog (); o1 = a1; o1 = p; a1 = p; Obiectul o2 = animal nou (); Obiectul o3 = câine nou (); Animal a2 = câine nou (); boolean b1 = o1 == o2; boolean b2 = o1 == o3; boolean b3 = o1 == a2; if (b1 || b2 || b3) {DoNothing (); }} 

După cum puteți vedea, o variabilă Object se poate referi la un obiect Animal sau la un obiect Dog, așa cum o variabilă Animal se poate referi la un obiect Dog. Capacitatea de polimorfism derivată din aceasta ne determină să putem manipula un obiect fără a trebui să știm exact ce obiect ESTE, să vedem următorul exemplu de metodă:
public static void doSomething (Animal a) {a.getColorDePelo (); }

Când o aplicație folosește această metodă, nu știe ce animal primește după parametru, poate fi un câine, poate fi o pisică, poate fi un cal sau mai târziu o aluniță, un elefant, un mandril sau orice altă clasă care este de tip Animal.
Cheia acestei proprietăți este că permite programului să utilizeze metode ale anumitor subclase fără a ști în mod specific ce tip de animal este și astfel să mențină un nivel semnificativ de abstractizare în ceea ce privește implementările viitoare ale clasei Animal.
În următorul tutorial vom intra mai profund în subiectul polimorfismului, vom vedea ce sunt interfețele și cum să programăm concentrate pe interfețe, ceea ce va ajuta la înțelegerea următoarelor tutoriale.
Subiectul a devenit puțin mai lung decât mă așteptam, dar nu disperați! Este important să înțelegeți corect aceste concepte înainte de a începe injectarea dependenței pentru a înțelege cum funcționează Spring.
Sper să continuăm săptămânal cu aceste tutoriale, nu uitați să lăsați comentariile dvs. până data viitoare!V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv
wave wave wave wave wave