Java / Spring - dziedziczenie, polimorfizm i wstrzykiwanie zależności

Spisie treści
Przyjrzymy się 2 koncepcjom programowania w Javie (Dziedzictwo Tak Wielopostaciowość) aby przygotować nas do zrozumienia bardziej zaawansowanej koncepcji zwanej Wstrzykiwanie zależności co jest typowe dla frameworków takich jak Spring i Hibernate, które są obecnie powszechnie używane i o których będziemy mówić w przyszłych samouczkach.
Nie, nie odnosi się to do tych milionów, które twój bogaty wujek zostawił cię, gdy w końcu umarł, jest to typowa koncepcja programowania w Javie i polega na „dziedziczeniu” pól i metod należących do superklasa w granicach podklasa.
Podstawy dziedziczenia:
  • Klasa wywodząca się z innej klasy nazywa się podklasa (lub rozszerzona klasa, klasa córki lub Klasy pochodnej). Również klasa, której podklasa jest pochodną nazywa się superklasa (również klasa podstawowa lub klasa rodzicielska). W tym samouczku i kolejnych samouczkach będę używał terminów podklasa Tak superklasa.
  • W szczególności w Javie, z wyjątkiem klasy Obiekt, WSZYSTKIE klasy dziedziczą bezpośrednio do SINGLE superklasa (proste dziedziczenie). W przypadku braku jawnego zdefiniowania nadklasy, każda klasa dziedziczy niejawnie z klasy Obiekt.
  • Klasa może dziedziczyć z innej klasy, która dziedziczy z innej klasy, która dziedziczy z innej klasy, dopóki nie dziedziczy z klasy Obiekt, mówi się wtedy, że wspomniana klasa „schodzi” ze wszystkich klas w hierarchii do klasy Obiekt.
Spróbujmy to uprościć na przykładzie:
Załóżmy, że w pakiecie dziedziczenia mamy następujące 3 klasy:
 dziedziczenie pakietów; public class Dog {private int numberOfLegs; prywatny kolor włosów String; prywatny wyścig String; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } public String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } public String getRace () {powrót wyścigu; } public void setRace (wyścig łańcuchowy) {this.race = race; } public void kora () {System.out.println ("Pies idzie WOW"); }} 

 dziedziczenie pakietów; public class Cat {private int numberOfLegs; prywatny kolor włosów String; prywatny wyścig String; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } public String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } public String getRace () {powrót wyścigu; } public void setRace (wyścig łańcuchowy) {this.race = race; } public void meow () {System.out.println ("Kot miauczy"); }} 

 dziedziczenie pakietów; public class Horse {private int numberOfLegs; prywatny kolor włosów String; prywatny wyścig String; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } public String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } public String getRace () {powrót wyścigu; } public void setRace (wyścig łańcuchowy) {this.race = race; } public void neigh () {System.out.println ("Koń robi IIIIGGGHHHH"); }} 

Można zauważyć, że 3 klasy generują 3 różne typy obiektów, ale o wielu podobnych cechach, w rzeczywistości są one dokładnie takie same, z wyjątkiem metod kory, miau i rżenia. Dlatego, używając pojęcia dziedziczenia, należałoby przepisać wspólne cechy w a superklasa i zmodyfikuj każdy podklasa aby dodać tylko odpowiednią metodę w następujący sposób:
[kolor = # a9a9a9]1[/Kolor]
Tworzymy superklasa Zwierzę:
 dziedziczenie pakietów; public class Animal {private int numberOfLegs; prywatny kolor włosów String; prywatny wyścig String; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } public String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } public String getRace () {powrót wyścigu; } public void setRace (wyścig łańcuchowy) {this.race = race; }} 

[kolor = # a9a9a9]2 [/Kolor]
Modyfikujemy 3 podklasy istniejące do dziedziczenia z klasy Animal (za pomocą słowa kluczowego „extends”) i po prostu dodaj jedną metodę:
 dziedziczenie pakietów; public class Pies rozszerza Animal {public void kora () {System.out.println ("Pies idzie WOW"); }} 

 dziedziczenie pakietów; public class Cat rozszerza Animal {public void meow () {System.out.println ("Kot robi MEOW"); }} 

 dziedziczenie pakietów; public class Horse extends Animal {public void neigh () {System.out.println ("Koń robi IIIIGGGHHHH"); }} 

W ten sposób uwieńczymy temat „Dziedziczenia” w Javie, wkrótce będziemy kontynuować koncepcję „Polimorfizmu”, która jest ściśle związana z „Dziedziczeniem” i pomoże nam zrozumieć pojęcie „Wstrzykiwania zależności”, aby zacząć rozumieć Ramy „Wiosna”.
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

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave