Indholdsfortegnelse
Vi vil se på 2 begreber for Java -programmering (Arv Y Polymorfisme) for at forberede os på at forstå et mere avanceret koncept kaldet Afhængighedsinjektion som er typisk for rammer som Spring og Hibernate, der ofte bruges i dag, og som vi vil tale om i fremtidige tutorials.Nej, det refererer ikke til de millioner, som din rige onkel forlod dig, da han endelig døde, det er et typisk begreb for Java -programmering og består af "arvelige" felter og metoder, der tilhører en superklasse inden for en underklasse.
Grundlæggende om arv:
- En klasse, der stammer fra en anden klasse, kaldes underklasse (eller udvidet klasse, datter klasse eller afledt klasse). Også den klasse, som underklasse er afledt kaldes superklasse (også grundklasse eller forældreklasse). Gennem denne vejledning og efterfølgende selvstudier vil jeg bruge vilkårene underklasse Y superklasse.
- Specielt i Java, bortset fra klassen Objekt, ALLE klasser arver direkte til en ENKEL superklasse (simpel arv). I tilfælde af ikke eksplicit at definere superklassen, arver hver klasse implicit fra klassen Objekt.
- En klasse kan arve fra en anden klasse, der arver fra en anden klasse, der arver fra en anden klasse, indtil den arver fra klassen Objekt, siges det så, at den nævnte klasse "stiger" fra alle klasserne i hierarkiet til klassen Objekt.
Antag, at vi har følgende 3 klasser i arvspakken:
pakke arv; offentlig klasse Hund {private int numberOfLegs; private hårfarve; privat String race; 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 () {return race; } public void setRace (String race) {this.race = race; } public void bark () {System.out.println ("Hunden går WOW"); }}
pakke arv; public class Cat {private int numberOfLegs; private String haircolor; privat String race; 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 () {return race; } public void setRace (String race) {this.race = race; } public void meow () {System.out.println ("Katten MEOW"); }}
pakke arv; offentlig klasse Hest {private int numberOfLegs; private hårfarve; privat String race; 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 () {return race; } public void setRace (String race) {this.race = race; } public void neigh () {System.out.println ("Hesten gør IIIIGGGHHHH"); }}
Det kan ses, at de 3 klasser genererer 3 forskellige typer objekter, men med flere lignende egenskaber, de er faktisk nøjagtig de samme bortset fra bark-, meow- og neigh -metoderne. Derfor ville det være hensigtsmæssigt at omskrive de fælles karakteristika i a ved at bruge arvebegrebet superklasse og ændre hver underklasse så de kun tilføjer den tilsvarende metode som følger:
[farve = # a9a9a9]1[/Farve]
Vi skaber superklasse Dyr:
pakke arv; offentlig klasse Animal {private int numberOfLegs; private hårfarve; privat String race; 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 () {return race; } public void setRace (String race) {this.race = race; }}
[farve = # a9a9a9]2 [/Farve]
Vi ændrer 3 underklasser eksisterende, der skal arves fra dyreklassen (ved hjælp af søgeordet "forlænger"), og tilføj bare den ene metode:
pakke arv; offentlig klasse Hund udvider Animal {public void bark () {System.out.println ("Dog goes WOW"); }}
pakke arv; public class Cat forlænger Animal {public void meow () {System.out.println ("Katten MEOW"); }}
pakke arv; offentlig klasse Hest udvider Animal {public void neigh () {System.out.println ("Horse does IIIIGGGHHHH"); }}
På denne måde kulminerer vi emnet "Arv" i Java, snart vil vi fortsætte med begrebet "Polymorfisme", der er tæt forbundet med "Arv" og vil hjælpe os med at forstå begrebet "afhængighedsinjektion" for at begynde at forstå Ramme "Forår".
Glem ikke at forlade dine kommentarer, indtil næste gang!Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt