Contenuti del Corso
Java OOP
Java OOP
Principi OOP: Polimorfismo
Polimorfismo
Il polimorfismo è un altro principio della OOP. Hai già incontrato il polimorfismo quando hai sovraccaricato e sovrascritto i metodi. In generale, questa è l'essenza del polimorfismo. Ma la definizione di polimorfismo può sembrare un po' intimidatoria:
Ma in realtà, è molto più semplice di quanto sembri. Polimorfismo, in termini semplici, può essere suddiviso in 2 parti:
Sovraccarico dei metodi: ciò che hai imparato in questo capitolo, ma rivediamolo.
Vediamo un esempio: dobbiamo scrivere un metodo che accetti un parametro di tipo int
e restituisca una String
, così come un metodo che faccia lo stesso ma con un parametro di tipo long
. Vediamo il frammento di codice:
Main.java
public String doStuff(int parameter) { //... } public String doStuff(long parameter) { //... }
Come puoi vedere sopra, abbiamo creato 2 metodi con lo stesso nome ma che possono svolgere funzioni diverse. Questo è il sovraccarico di metodi.
Sovrascrittura di metodi: Hai già incontrato questo argomento quando hai sovrascritto il metodo
toString
in questo capitolo. Ma rivediamolo ancora una volta.
Osserviamo un frammento di codice che ci mostrerà come possiamo sovrascrivere un metodo. Abbiamo una classe chiamata Airplane
che eredita dalla classe Transport
. Nella classe Transport
è presente un metodo chiamato move
che restituisce "This transport has started moving".
Abbiamo bisogno che l'aereo "inizi a volare" invece di "muoversi". Per ottenere questo risultato, sovrascriveremo il metodo move
nella classe figlia:
Transport.java
Airplane.java
public class Transport { // some fields public String move() { return "This transport has started moving"; } }
Come puoi vedere, abbiamo sovrascritto il metodo della classe genitore nella classe figlia come richiesto.
In questo modo, il polimorfismo completa molto bene l'ereditarietà. Attraverso il polimorfismo, possiamo estendere comodamente e in modo ottimale il nostro codice, rendendolo flessibile.
1. Perché abbiamo bisogno del polimorfismo in Java?
2. In che modo il polimorfismo completa l'ereditarietà?
3. Quale parola chiave viene utilizzata per sovraccaricare un metodo?
Grazie per i tuoi commenti!