Java / Spring - Arv, polymorfisme og avhengighetsinjeksjon

Innholdsfortegnelse
Vi skal se på to konsepter for Java -programmering (Arv Y Polymorfisme) for å forberede oss til å forstå et mer avansert konsept kalt Avhengighetsinjeksjon som er typisk for rammer som Spring og Hibernate som ofte brukes i dag, og som vi vil snakke om i fremtidige opplæringsprogrammer.
Nei, det refererer ikke til de millionene som din rike onkel forlot deg da han endelig døde, det er et typisk konsept for Java -programmering og består av "arvelige" felt og metoder som tilhører en superklasse innenfor en underklasse.
Grunnleggende om arv:
  • En klasse som er avledet fra en annen klasse kalles underklasse (eller utvidet klasse, datter klasse eller avledet klasse). Også klassen som underklasse er avledet kalles superklasse (også grunnklasse eller foreldreklasse). Gjennom denne opplæringen og påfølgende opplæringsprogrammer vil jeg bruke vilkårene underklasse Y superklasse.
  • Spesielt i Java, bortsett fra klassen Gjenstand, ALLE klasser arver direkte til EN ENKEL superklasse (enkel arv). Hvis du ikke eksplisitt definerer superklassen, arver hver klasse implisitt fra klassen Gjenstand.
  • En klasse kan arve fra en annen klasse som arver fra en annen klasse som arver fra en annen klasse til den arver fra klassen Gjenstand, sies det da at klassen "stiger" fra alle klassene i hierarkiet til klassen Gjenstand.
La oss prøve å forenkle dette med et eksempel:
Anta at vi har følgende 3 klasser i arvspakken:
 pakke arv; offentlig klasse hund {private int numberOfLegs; privat hårfarge; privat strengløp; 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 () {returløp; } public void setRace (String race) {this.race = race; } offentlig hulrom () {System.out.println ("Hunden går WOW"); }} 

 pakke arv; offentlig klasse Cat {private int numberOfLegs; privat hårfarge; privat strengløp; 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 () {returløp; } public void setRace (String race) {this.race = race; } public void meow () {System.out.println ("Katten gjør MEOW"); }} 

 pakke arv; offentlig klasse Horse {private int numberOfLegs; privat hårfarge; privat strengløp; 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 () {returløp; } public void setRace (String race) {this.race = race; } public void neigh () {System.out.println ("Hesten gjør IIIIGGGHHHH"); }} 

Det kan sees at de 3 klassene genererer 3 forskjellige typer objekter, men med flere lignende egenskaper, faktisk er de nøyaktig de samme bortsett fra metodene bark, meow og neigh. Derfor ville det være hensiktsmessig å omskrive de vanlige egenskapene i a ved å bruke arvebegrepet superklasse og endre hver underklasse slik at de bare legger til den tilsvarende metoden som følger:
[farge = # a9a9a9]1[/Farge]
Vi lager superklasse Dyr:
 pakke arv; offentlig klasse Animal {private int numberOfLegs; privat hårfarge; privat strengløp; 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 () {returløp; } public void setRace (String race) {this.race = race; }} 

[farge = # a9a9a9]2 [/Farge]
Vi endrer 3 underklasser eksisterende som skal arves fra dyreklassen (ved å bruke søkeordet "utvider") og bare legge til enkeltmetoden:
 pakke arv; offentlig klasse Hund utvider Animal {public void bark () {System.out.println ("Dog goes WOW"); }} 

 pakke arv; offentlig klasse Cat extends Animal {public void meow () {System.out.println ("Katten gjør MEOW"); }} 

 pakke arv; offentlig klasse Hest utvider Animal {public void neigh () {System.out.println ("Horse does IIIIGGGHHHH"); }} 

På denne måten kulminerer vi temaet "arv" i Java, snart vil vi fortsette med begrepet "polymorfisme" som er nært knyttet til "arv" og vil hjelpe oss å forstå begrepet "avhengighetsinjeksjon" for å begynne å forstå Rammeverk "våren".
Ikke glem å legge igjen kommentarene dine, til neste gang!Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave