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

Sommario
Questa è la seconda parte di una serie di tutorial focalizzati sulla revisione degli argomenti di base del linguaggio Java per preparare il lettore all'uso di Spring Framework. La prima parte di questa serie di tutorial può essere trovata qui. In questo tutorial parleremo di Polimorfismo.
La parola polimorfismo deriva dal greco "poly" che significa molti e "morpho" che significa forma e in generale è a questo che si riferisce, la capacità di assumere più forme. Nella programmazione orientata agli oggetti si parla di variabili o riferimenti che possono assumere la forma di diversi oggetti.
Ora che sai da dove viene il concetto, proviamo a metterlo in relazione con il linguaggio Java. Come abbiamo visto nel tutorial precedente, il concetto di "Eredità" ci permette di stabilire una relazione genitore-figlio tra 2 classi private:
Immagine inviata
In questo esempio, la relazione di ereditarietà è tra la classe Cane e la classe Animale, classe Gatto e la classe Animale e la classe Cavallo e la classe Animale, nota che tra Cane, GattoCavallo non c'è un rapporto diretto.
Usando questo diagramma come base, possiamo dire che un cane è un animale, un gatto è un animale e un cavallo è un animale. Quando puoi esprimere la relazione in questo modo in Java, possiamo dire che una variabile della Classe Animale è polimorfico poiché può assumere la forma di a Cavallo, di una Gatto o un Cane.
Nel tutorial precedente abbiamo anche visto che TUTTE le classi ereditano direttamente o indirettamente dalla classe Oggetto, in questo caso lo schema è leggermente più completo se lo definiamo così:
Immagine inviata
E questo può essere esteso a più livelli verso il basso (essenzialmente il limite di livello dipenderà dalla tua JVM ma normalmente è superiore a 40) Quindi un animale è un oggetto, un gatto è un animale e un gatto (per transitività) è un oggetto.
Java consente quindi di utilizzare i riferimenti di classe nei punti più alti di questa struttura per puntare agli oggetti sottostanti nella struttura. Ad esempio:
 public static void main (String [] args) {Object o1 = new Object (); Animale a1 = nuovo Animale (); Cane p = nuovo Cane (); o1 = a1; o1 = p; a1 = p; Oggetto o2 = nuovo Animale (); Oggetto o3 = nuovo Cane (); Animale a2 = nuovo Cane (); booleano b1 = o1 == o2; booleano b2 = o1 == o3; booleano b3 = o1 == a2; if (b1 || b2 || b3) {Non fare nulla (); }} 

Come puoi vedere, una variabile Object può fare riferimento a un oggetto Animal o un oggetto Dog proprio come una variabile Animal può fare riferimento a un oggetto Dog. La capacità di polimorfismo che ne deriva ci porta a poter manipolare un oggetto senza dover sapere esattamente cosa E' l'oggetto, vediamo il seguente metodo di esempio:
public static void doSomething (Animal a) {a.getColorDePelo (); }

Quando un'applicazione utilizza questo metodo non sa quale Animale sta ricevendo per parametro, può essere un Cane, può essere un Gatto, può essere un Cavallo o più tardi una Talpa, un Elefante, un Mandrillo o qualsiasi altra classe che è del tipo Animale.
La chiave di questa proprietà è che consente al programma di utilizzare metodi di determinate sottoclassi senza sapere specificamente di che tipo di Animal si tratta e quindi di mantenere un livello di astrazione significativo rispetto alle future implementazioni della classe Animal.
Nel prossimo tutorial approfondiremo l'argomento del polimorfismo, vedremo cosa sono le interfacce e come programmare focalizzato sulle interfacce, che aiuterà a capire i seguenti tutorial.
L'argomento è diventato un po' più lungo di quanto mi aspettassi, ma non disperare! È importante comprendere correttamente questi concetti prima di avviare Dependency Injection per capire come funziona Spring.
Spero di continuare con questi tutorial settimana per settimana, 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

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave