Java / Spring - Arv, polymorfism och beroendeinsprutning

Innehållsförteckning
Vi kommer att titta på två begrepp för Java -programmering (Arv Y Polymorfism) för att förbereda oss för att förstå ett mer avancerat koncept som kallas Beroendeinsprutning vilket är typiskt för ramverk som Spring och Hibernate som vanligtvis används idag och som vi kommer att prata om i framtida självstudier.
Nej, det hänvisar inte till de miljoner som din rika farbror lämnade dig när han slutligen dog, det är ett typiskt koncept för Java -programmering och består av "ärvande" fält och metoder som tillhör en superklass inom en underklass.
Arvsgrunder:
  • En klass som härrör från en annan klass kallas underklass (eller utökad klass, dotterklass eller härledd klass). Även klassen av vilken underklass härleds kallas superklass (för basklass eller föräldraklass). Under denna handledning och efterföljande självstudier kommer jag att använda termerna underklass Y superklass.
  • I Java specifikt, förutom klassen Objekt, ALLA klasser ärver direkt till en ENKEL superklass (enkelt arv). Om inte superklassen uttryckligen definieras, ärver varje klass implicit från klassen Objekt.
  • En klass kan ärva från en annan klass som ärver från en annan klass som ärver från en annan klass tills den ärver från klassen Objekt, sägs det sedan att klassen "stiger" från alla klasser i hierarkin till klassen Objekt.
Låt oss försöka förenkla detta med ett exempel:
Antag att vi har följande tre klasser i arvspaketet:
 paketarv; public class Dog {private int numberOfLegs; privat hårfärg; privat stränglopp; 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 () {returlopp; } public void setRace (String race) {this.race = race; } public void bark () {System.out.println ("Hunden går WOW"); }} 

 paketarv; public class Cat {private int numberOfLegs; privat hårfärg; privat stränglopp; 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 () {returlopp; } public void setRace (String race) {this.race = race; } public void meow () {System.out.println ("Katten gör MEOW"); }} 

 paketarv; offentlig klass Häst {private int numberOfLegs; privat hårstrå hårfärg; privat stränglopp; 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 () {returlopp; } public void setRace (String race) {this.race = race; } public void neigh () {System.out.println ("Hästen gör IIIIGGGHHHH"); }} 

Det kan ses att de tre klasserna genererar 3 olika typer av objekt men med flera liknande egenskaper, i själva verket är de exakt samma förutom metoderna bark, meow och neigh. Därför skulle det vara lämpligt att skriva om de gemensamma egenskaperna i a med hjälp av begreppet arv superklass och ändra varje underklass så att de bara lägger till motsvarande metod enligt följande:
[color = # a9a9a9]1[/Färg]
Vi skapar superklass Djur:
 paketarv; public class Animal {private int numberOfLegs; privat hårstrå hårfärg; privat stränglopp; 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 () {returlopp; } public void setRace (String race) {this.race = race; }} 

[color = # a9a9a9]2 [/Färg]
Vi ändrar 3 underklasser befintliga som ska ärva från djurklassen (med sökordet "extends") och lägg bara till den enda metoden:
 paketarv; offentlig klass Hund utökar Animal {public void bark () {System.out.println ("Dog goes WOW"); }} 

 paketarv; public class Cat extends Animal {public void meow () {System.out.println ("Katten gör MEOW"); }} 

 paketarv; offentlig klass Häst utökar Animal {public void neigh () {System.out.println ("Horse does IIIIGGGHHHH"); }} 

På detta sätt kulminerar vi ämnet "Arv" i Java, snart fortsätter vi med begreppet "Polymorfism" som är nära besläktat med "Arv" och hjälper oss att förstå begreppet "beroendeberoende" för att börja förstå Ram "Våren".
Glöm inte att lämna dina kommentarer tills nästa gång!Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave