Java / Spring - Overerving, polymorfisme en afhankelijkheidsinjectie

Inhoudsopgave
We zullen kijken naar 2 concepten van Java-programmering (Erfenis Y Polymorfisme) om ons voor te bereiden op het begrijpen van een meer geavanceerd concept genaamd Afhankelijkheid injectie wat typerend is voor Frameworks zoals Spring en Hibernate die tegenwoordig veel worden gebruikt en waar we het in toekomstige tutorials over zullen hebben.
Nee, het verwijst niet naar die miljoenen die je rijke oom je naliet toen hij uiteindelijk stierf, het is een typisch concept van Java-programmering en bestaat uit het "erven" van velden en methoden die behoren tot een superklasse binnen een subklasse.
Basisprincipes van overerving:
  • Een klasse die is afgeleid van een andere klasse heet subklasse (of uitgebreide klasse, dochter klas of afgeleide klasse). Ook de klasse waarvan de subklasse is afgeleid heet superklasse (te basisklasse of ouder klas). In deze tutorial en de daaropvolgende tutorials zal ik de termen gebruiken subklasse Y superklasse.
  • In Java specifiek, behalve de klasse Object, ALLE klassen nemen rechtstreeks over op een SINGLE superklasse (eenvoudige erfenis). In het geval dat de superklasse niet expliciet wordt gedefinieerd, erft elke klasse impliciet van de klasse Object.
  • Een klasse kan erven van een andere klasse die erft van een andere klasse die erft van een andere klasse totdat ze erft van de klasse Object, er wordt dan gezegd dat de klasse "afdaalt" van alle klassen in de hiërarchie naar de klasse Object.
Laten we proberen dit te vereenvoudigen met een voorbeeld:
Stel dat we de volgende 3 klassen in het overervingspakket hebben:
 pakket erfenis; openbare klasse Hond {private int numberOfLegs; privé String haarkleuring; privé 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 ("De hond gaat WOW"); }} 

 pakket erfenis; openbare klasse Cat {private int numberOfLegs; privé String haarkleuring; privé 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 miauw () {System.out.println ("De kat miauwt"); }} 

 pakket erfenis; openbare klasse Paard {private int numberOfLegs; privé String haarkleuring; privé 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 ("Het paard doet IIIIGGGHHHH"); }} 

Het is te zien dat de 3 klassen 3 verschillende soorten objecten genereren, maar met meerdere vergelijkbare kenmerken, in feite zijn ze precies hetzelfde, behalve de methoden blaffen, miauwen en hinniken. Daarom zou het, met behulp van het concept van overerving, passend zijn om de gemeenschappelijke kenmerken te herschrijven in a superklasse en wijzig elk subklasse zodat ze alleen de bijbehorende methode als volgt toevoegen:
[kleur = # a9a9a9]1[/Kleur]
Wij creëren de superklasse Dier:
 pakket erfenis; openbare klasse Animal {private int numberOfLegs; privé String haarkleuring; privé 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; }} 

[kleur = # a9a9a9]2 [/Kleur]
We wijzigen de 3 subklassen bestaande om te erven van de klasse Animal (met behulp van het trefwoord "extends") en voeg gewoon de enkele methode toe:
 pakket erfenis; public class Dog breidt Animal {public void bark () {System.out.println ("Dog goes WOW"); }} 

 pakket erfenis; public class Cat breidt Animal {public void miauw () {System.out.println ("De kat miauwt"); }} 

 pakket erfenis; public class Horse breidt Animal {public void neigh () {System.out.println ("Paard doet IIIIGGGHHHH"); }} 

Op deze manier culmineren we in het onderwerp "Overerving" in Java, binnenkort zullen we doorgaan met het concept van "Polymorfisme" dat nauw verwant is aan "Overerving" en zal ons helpen het concept van "Afhankelijkheidsinjectie" te begrijpen om de Kader "Lente".
Vergeet niet uw opmerkingen achter te laten, tot de volgende keer!Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave