Ciao a tutti! Benvenuti alla settimana 6 del nostro viaggio nel mondo della programmazione Java. Dopo aver introdotto la Programmazione Orientata agli Oggetti (OOP) la settimana scorsa, questa settimana ci addentreremo in due concetti chiave dell’OOP: l’ereditarietà e il polimorfismo.
Ereditarietà
L’ereditarietà è uno dei pilastri della OOP. Permette a una classe di ereditare campi e metodi da un’altra classe. In Java, usiamo la parola chiave extends
per denotare l’ereditarietà.
Esempio:
public class Veicolo {
int velocita;
void accelera() {
velocita++;
}
}
public class Automobile extends Veicolo {
int numeroDiPorte;
}
In questo esempio, la classe Automobile
eredita il campo velocita
e il metodo accelera()
dalla classe Veicolo
. Inoltre, aggiunge un nuovo campo, numeroDiPorte
.
Polimorfismo
Il polimorfismo è un altro concetto chiave in OOP. Permette a un oggetto di assumere molte forme. In pratica, se una classe B
eredita da una classe A
, allora un oggetto di tipo B
può essere trattato come un oggetto di tipo A
.
Esempio:
Veicolo miaAuto = new Automobile();
miaAuto.accelera();
In questo esempio, creiamo un oggetto Automobile
ma lo riferiamo con un riferimento di tipo Veicolo
. Questo è possibile grazie al polimorfismo.
Esercizi È tempo di mettere in pratica i concetti di ereditarietà e polimorfismo:
Esercizio 1
Crea una classe Motocicletta
che estende la classe Veicolo
. Aggiungi un nuovo campo specifico per Motocicletta
.
Esercizio 2
Crea un array di Veicolo
e popolalo con diverse istanze di Automobile
e Motocicletta
. Scorri l’array e chiama il metodo accelera()
su ogni veicolo.
Esercizio 3
Crea una classe VeicoloAereo
che estende Veicolo
e introduce una nuova proprietà, altitudine
. Implementa un metodo decolla()
che aumenta l’altitudine e un metodo atterra()
che imposta l’altitudine a zero.
Esercizio 4
Estendi la classe VeicoloAereo
con una nuova classe Elicottero
. Aggiungi una nuova proprietà, numeroDiEliche
. Implementa un metodo hover()
che stampa un messaggio quando l’elicottero è in hover (cioè, sospeso in aria).
Esercizio 5
Crea un array di Veicolo
che contiene istanze di Automobile
, Motocicletta
e Elicottero
. Scorri l’array e chiama il metodo accelera()
su ogni veicolo. Prova a chiamare il metodo decolla()
e atterra()
sugli oggetti VeicoloAereo
.
Esercizio 6
Crea una classe VeicoloMarino
che estende Veicolo
. Aggiungi un metodo naviga()
che stampa un messaggio quando il veicolo naviga.
Esercizio 7
Crea una classe Sottomarino
che estende VeicoloMarino
. Aggiungi un metodo immergiti()
che stampa un messaggio quando il sottomarino si immerge sott’acqua. Crea un’istanza di Sottomarino
e chiama i suoi metodi.
Spero che questi esercizi ti aiutino a consolidare la tua comprensione dell’ereditarietà e del polimorfismo in Java. Ricorda, la pratica è fondamentale quando si impara un nuovo linguaggio di programmazione. Buona programmazione!
Lascia un commento