Spisie treści
Jest to druga część serii samouczków skupiających się na omówieniu podstawowych tematów języka Java, aby przygotować czytelnika do korzystania ze Spring Framework. Pierwszą część tej serii samouczków można znaleźć tutaj. W tym samouczku będziemy mówić o polimorfizmie.Słowo polimorfizm pochodzi od greckiego „poly”, co oznacza wiele i „morpho”, co oznacza kształt i ogólnie do tego się odnosi, zdolność przybierania wielu form. W Programowaniu zorientowanym obiektowo mówimy o zmiennych lub referencjach, które mogą przybierać formę kilku różnych obiektów.
Teraz, gdy już wiesz, skąd pochodzi koncepcja, spróbujmy powiązać ją z językiem Java. Jak widzieliśmy w poprzednim samouczku, koncepcja „Dziedziczenia” pozwala nam na ustanowienie relacji rodzic-dziecko między 2 prywatnymi klasami:
W tym przykładzie relacja dziedziczenia zachodzi między klasą Pies i klasa Zwierzę, klasa Kot i klasa Zwierzę i klasa Koń i klasa Zwierzę, zauważ, że między Pies, Kot Tak Koń nie ma bezpośredniego związku.
Używając tego diagramu jako podstawy, możemy powiedzieć, że pies JEST zwierzęciem, kot JEST zwierzęciem, a koń JEST zwierzęciem. Kiedy możesz w ten sposób wyrazić zależność w Javie, możemy powiedzieć, że zmienna klasy Zwierzę jest polimorficzny, ponieważ może przybrać postać a Koń, z Kot lub Pies.
W poprzednim samouczku widzieliśmy również, że WSZYSTKIE klasy dziedziczą bezpośrednio lub pośrednio z klasy Obiekt, w tym przypadku diagram jest nieco bardziej kompletny, jeśli zdefiniujemy go w ten sposób:
Można to rozszerzyć o wiele poziomów w dół (zasadniczo limit poziomu będzie zależeć od twojej JVM, ale zwykle wynosi powyżej 40). Tak więc zwierzę JEST obiektem, kot JEST zwierzęciem, a kot (przez przechodniość) JEST obiektem.
Java pozwala następnie na użycie odwołań do klas w najwyższych punktach tej struktury, aby wskazać obiekty znajdujące się poniżej nich w strukturze. Na przykład:
public static void main (String [] args) {Object o1 = new Object (); Zwierzę a1 = nowe Zwierzę (); Pies p = nowy Pies (); o1 = a1; o1 = p; a1 = p; Obiekt o2 = nowe zwierzę (); Obiekt o3 = nowy pies (); Zwierzę a2 = nowy pies (); wartość logiczna b1 = o1 == o2; wartość logiczna b2 = o1 == o3; wartość logiczna b3 = o1 == a2; jeśli (b1 || b2 || b3) {Nie robić nic (); }}
Jak widać, zmienna Object może odwoływać się do obiektu Animal lub Dog, tak jak zmienna Animal może odnosić się do obiektu Dog. Wyprowadzona z tego zdolność polimorfizmu prowadzi nas do możliwości manipulowania obiektem bez konieczności dokładnej wiedzy, jaki obiekt JEST, zobaczmy następującą przykładową metodę:
public static void doCoś (Zwierzę a) {a.getColorDePelo (); }
Gdy aplikacja korzysta z tej metody, nie wie, jakie zwierzę otrzymuje według parametru, może to być Pies, Kot, Koń lub później Kret, Słoń, Mandryl lub jakakolwiek inna klasa, która jest typu Zwierzę.
Kluczem do tej właściwości jest to, że pozwala ona programowi na używanie metod określonych podklas bez wiedzy o konkretnym typie klasy Animal, a tym samym utrzymywanie znacznego poziomu abstrakcji w odniesieniu do przyszłych implementacji klasy Animal.
W kolejnym tutorialu zagłębimy się w temat polimorfizmu, zobaczymy czym są interfejsy i jak programować skoncentrowany na interfejsach, co pomoże zrozumieć poniższe tutoriale.
Temat jest trochę dłuższy niż się spodziewałem, ale nie rozpaczaj! Ważne jest, aby poprawnie zrozumieć te koncepcje przed uruchomieniem Dependency Injection, aby zrozumieć, jak działa Spring.
Mam nadzieję, że będziemy kontynuować te tutoriale tydzień po tygodniu, nie zapomnij zostawić komentarzy do następnego razu!Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt