Java / Spring - Ereditarietà, polimorfismo e iniezione di dipendenze

Sommario
Vedremo 2 concetti di programmazione Java (EreditàPolimorfismo) per prepararci a comprendere un concetto più avanzato chiamato Iniezione di dipendenza che è tipico di Framework come Spring e Hibernate che sono comunemente usati oggi e di cui parleremo in futuri tutorial.
No, non si riferisce a quei milioni che il tuo ricco zio ti ha lasciato quando alla fine è morto, è un concetto tipico della programmazione Java e consiste nell'"ereditare" campi e metodi appartenenti a un superclasse All'interno di una sottoclasse.
Nozioni di base sull'eredità:
  • Viene chiamata una classe derivata da un'altra classe sottoclasse (o classe estesa, classe figlia o classe derivata). Inoltre, la classe di cui sottoclasse è derivato si chiama superclasse (pure classe base o classe genitore). In questo tutorial e nei tutorial successivi userò i termini sottoclassesuperclasse.
  • In Java in particolare, ad eccezione della classe Oggetto, TUTTE le classi ereditano direttamente da un SINGOLO superclasse (semplice eredità). In caso di non definizione esplicita della superclasse, ogni classe eredita implicitamente dalla classe Oggetto.
  • Una classe può ereditare da un'altra classe che eredita da un'altra classe che eredita da un'altra classe fino a ereditare dalla classe Oggetto, si dice poi che detta classe "scende" da tutte le classi della gerarchia alla classe Oggetto.
Proviamo a semplificare con un esempio:
Supponiamo di avere le seguenti 3 classi nel pacchetto di ereditarietà:
 ereditarietà del pacchetto; public class Dog {private int numberOfLegs; colore dei capelli String privato; gara di stringa privata; 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 ("Il cane fa WOW"); }} 

 ereditarietà del pacchetto; public class Cat {private int numberOfLegs; colore dei capelli String privato; gara di stringa privata; 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 ("Il gatto fa MEOW"); }} 

 ereditarietà del pacchetto; public class Horse {private int numberOfLegs; colore dei capelli String privato; gara di stringa privata; 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 ("Il cavallo fa IIIIGGGHHHH"); }} 

Si può notare che le 3 classi generano 3 diversi tipi di oggetti ma con caratteristiche multiple simili, infatti, sono esattamente le stesse tranne che per i metodi corteccia, miagolio e nitrito. Pertanto, utilizzando il concetto di ereditarietà, sarebbe opportuno riscrivere le caratteristiche comuni in a superclasse e modificare ciascuno sottoclasse in modo che aggiungano solo il metodo corrispondente come segue:
[colore = # a9a9a9]1[/Colore]
Creiamo il superclasse Animale:
 ereditarietà del pacchetto; public class Animal {private int numberOfLegs; colore dei capelli String privato; gara di stringa privata; 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; }} 

[colore = # a9a9a9]2 [/Colore]
Modifichiamo il 3 sottoclassi quelli esistenti da ereditare dalla classe Animal (usando la parola chiave "extends") e basta aggiungere il metodo singolo:
 ereditarietà del pacchetto; public class Cane estende Animal {public void bark () {System.out.println ("Dog goes WOW"); }} 

 ereditarietà del pacchetto; public class Cat estende Animal {public void meow () {System.out.println ("Il gatto fa MEOW"); }} 

 ereditarietà del pacchetto; public class Horse estende Animal {public void neigh () {System.out.println ("Horse fa IIIIGGGHHHH"); }} 

In questo modo culmineremo l'argomento di "Ereditarietà" in Java, presto continueremo con il concetto di "Polimorfismo" che è strettamente correlato a "Ereditarietà" e ci aiuterà a capire il concetto di "Iniezione di dipendenza" per iniziare a capire il Quadro "Primavera".
Non dimenticare di lasciare i tuoi commenti, alla prossima volta!Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo
wave wave wave wave wave