buona sera a tutti!
mi scuso per il titolo del topic ma non sapevo cosa altro scrivere, l'ereditarietà è la cosa che si avvicina di più al mio problema(non sapendo come definirlo non ho nemmeno saputo cosa cercare, mi scuso se si era già trattato l'argomento).
date le classi(nomi improvvisati giusto per provare a render meglio il problema
Giocatore contiene i dati del Giocatore(un'istanza per ogni omino sullo schermo)codice:class Giocatore { public void update(int elapsedTime); } class GiocatoreNelMenu extends Giocatore { public void update(int elapsedTime); } class GiocatoreNelloScontro extends Giocatore { public void update(int elapsedTime); }
GiocatoreNelMenu, update(int elapsedTime) deve aggiornare la situazione quando sto lavorando in un menù
GiocatoreNelloScontro, update(int elapsedTime) si occupa di aggiornare i dati quando sta effettivamente giocando
quel che vorrei fare è questo: creare una sola variabile Giocatore, contenente i dati, quindi usare i metodi update delle due sottoclassi, nel senso:
Giocatore g = new Giocatore();
GiocatoreNelloScontro gs = (GiocatoreNelloScontro) g;
GiocatoreNelMenu gm = (GiocatoreNelMenu) g;
questo non funziona per ovvi motivi.
l'unica soluzione che sono riuscito a pensare è eliminare l'ereditarietà e passare nel costruttore delle due sottoclassi l'istanza di Giocatore, da salvare in una variabile all'interno della sottoclasse.
esiste una soluzione più bella e agevole? è ancora in fase di progettazione, quindi non ho limiti alle modifiche alla struttura del programma.
grazie a tutti.