Creare un programma in Java che rappresenti una gerarchia di veicoli. La gerarchia deve includere almeno tre livelli di ereditarietà:
una classe base Veicolo; che include attributi comuni a tutti i veicoli, come marca, modello, e annoDiProduzione.
una sottoclasse Auto; che include almeno un attributo unico rispetto a veicolo (per esempio, numPorte).
una sottoclasse Moto; che include almeno un attributo unico rispetto a veicolo (per esempio, haSidecare).
Ogni classe dovrebbe avere:
uno o più costruttori;
metodi getter/setter;
ridefinizione del metodo toString().
Infine, implementare un main di prova con le seguenti operazioni:
creazione di un array di 3 veicoli;
lettura da terminale dei dati dei veicoli utilizzando la classe Scanner;
inserimento dei veicoli letti all'interno dell'array;
iterazione sull'array e stampa del risultato dell'invocazione del metodo toString().