Java / Spring - Наследяване, полиморфизъм и инжектиране на зависимости - Част 2

Съдържание
Това е втората част от поредицата уроци, насочени към преглед на основните теми на езика Java, за да подготвят читателя за използването на Spring Framework. Първата част от тази серия уроци можете да намерите тук. В този урок ще говорим за полиморфизма.
Думата полиморфизъм идва от гръцкото "поли", което означава много и "морфо", което означава форма и като цяло това е, което означава, способността да приема множество форми. В обектно -ориентираното програмиране говорим за променливи или препратки, които могат да приемат формата на няколко различни обекта.
Сега, когато знаете откъде идва концепцията, нека се опитаме да я свържем с езика Java. Както видяхме в предишния урок, концепцията за „Наследяване“ ни позволява да установим връзка родител-дете между 2 частни класа:
Изображението е изпратено
В този пример връзката на наследяване е между класа Куче и класа Животински, клас Котка и класа Животински и класа Кон и класа Животински, имайте предвид, че между Куче, Котка Y Кон няма пряка връзка.
Използвайки тази диаграма като основа, можем да кажем, че едно куче е животно, котка е животно и кон е животно. Когато можете да изразите връзката по този начин в Java, можем да кажем, че променлива на класа Животински е полиморфна, тъй като може да приеме формата на a Кон, на а Котка или а Куче.
В предишния урок също видяхме, че ВСИЧКИ класове наследяват пряко или косвено от класа Обект, в този случай диаграмата е малко по -пълна, ако я дефинираме така:
Изображението е изпратено
И това може да бъде разширено на няколко нива надолу (По същество ограничението на нивото ще зависи от вашата JVM, но обикновено е над 40) Така че едно животно е обект, котка е животно и котка (по транзитивност) е обект.
След това Java ви позволява да използвате препратки към класове във високи точки в тази структура, за да посочите обекти под тях в структурата. Например:
 публичен static void main (String [] args) {Object o1 = new Object (); Животно a1 = ново животно (); Куче p = ново куче (); o1 = a1; o1 = p; a1 = p; Обект o2 = ново животно (); Обект o3 = ново куче (); Животно a2 = ново куче (); логическо b1 = o1 == o2; логическо b2 = o1 == o3; логическо b3 = o1 == a2; if (b1 || b2 || b3) {DoNothing (); }} 

Както можете да видите, променлива Object може да се отнася до обект Animal или Dog обект, точно както променлива Animal може да се отнася до Dog обект. Полученият от това капацитет на полиморфизъм ни кара да можем да манипулираме обект, без да се налага да знаем какво точно представлява обектът, нека видим следния примерен метод:
публична статична празнота doSomething (Animal a) {a.getColorDePelo (); }

Когато дадено приложение използва този метод, то не знае кое животно получава по параметър, може да е куче, може да е котка, може да е кон или по -късно бенка, слон, мандрила или друг клас, който е от Животински тип.
Ключът към това свойство е, че позволява на програмата да използва методи на определени подкласове, без да знае конкретно какъв тип Животно е и по този начин поддържа значително ниво на абстракция по отношение на бъдещите реализации на класа Animal.
В следващия урок ще навлезем по -задълбочено в темата за полиморфизма, ще видим какво представляват интерфейсите и как да програмираме фокусирани върху интерфейсите, което ще помогне да се разберат следните уроци.
Темата стана малко по -дълга, отколкото очаквах, но не се отчайвайте! Важно е да разберете правилно тези понятия, преди да започнете инжектиране на зависимости, за да разберете как работи Spring.
Надявам се да продължим с тези уроци седмица след седмица, не забравяйте да оставите коментарите си до следващия път!Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave