Override e Overload in Java

Analizziamo con dei semplici esempi di codice queste due tecniche che talvolta vengono confuse dai programmatori

Overload

In Java ogni classe identifica i suoi metodi attraverso la signature, ovvero

La signature quindi specifica il livello di accesso del metodo (public in questo caso), il tipo che viene ritornato (void in questo caso), il nome del metodo e i parametri richiesti. Java attraverso la tecnica dell’overload ci permette di avere due metodi con nome uguale all’interno della nostra classe. Questi due metodi per essere però identificati dovranno chiaramente avere una signature differente.

Questa tecnica è utile quando dobbiamo definire metodi simili, ma con funzionalità leggermente differenti. Un esempio classico di overload di metodi è quello riportato nel codice seguente

Qui abbiamo definito due metodi “somma” che presentano però delle differenze per quanto riguarda i parametri.

Override

L’override di un metodo in Java permette invece di ridefinire un metodo della classe padre. Allora pensiamo di avere la classe A con il metodo saluta() così definito

Abbiamo inoltre una classe B che estende semplicemente A

Ora vogliamo ridefinire nella classe B il metodo saluta(), perchè il metodo della classe A non fa quello che noi vorremmo nella classe B. Quello che dobbiamo fare, ovvero l’override del metodo, è semplicemente ridefinire il metodo saluta() con la stessa signature del metodo della classe A, ma cambiandone chiaramente il codice.

In questo modo abbiamo il nuovo metodo per la classe B. Ci sono delle restrizioni che dobbiamo considerare. Prima di tutto non possiamo fare l’override di un metodo final e soprattutto non possiamo modificare la signature del metodo, possiamo soltanto aumentare la visibilità del metodo (public, private, protected) e non diminuirla.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *