Originariamente inviato da bircastri
ti rispondo alla seconda domanda si
In generale NO e ti spiego il motivo:
se tu hai un veicolo v inizializzato in un momento t, se dopo 10 istruzioni fai
codice:
Macchina fiat = v;
assegni a fiat il riferimento di v. Significa che adesso hai 2 contenitori (variabili) che puntano (passami il termine) allo stesso oggetto.
ma se tu fai
codice:
Veicolo v = new Veicolo();
//dopo un po'
Macchina fiat = new Veicolo();
a fiat assegni un riferimento ad un oggetto di tipo veicolo, che non è lo stesso di v!!Adesso in memoria hai 2 oggetti di tipo veicolo referenziati da 2 variabili.
Anche quando fai
codice:
Veicolo v = new Veicolo();
Macchina fiat = v;
qui hai in fiat un riferimento ad un'istanza pulita (appena nata) di veicolo, in memoria hai un solo oggetto, ma 2 riferimenti vi puntano.
Riepilogando: l'assegnamento (fiat = v)comporta 2 riferimenti che puntano allo stesso oggetto, il new comporta avere 2 riferimenti che puntano ad oggetti differenti.
Riguardo la prima domanda, l'esercizio vuole farti degli esempi su ereditarietà e polimorfismo