Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79

    [Java] Chiamare metodi di classi figlie

    salve a tutti, ho il seguente problema:

    in pratica ho una classe astratta padre, e tre classi figlie che ereditano dalla classe padre, in cui ho definito alcuni metodi non presenti nella classe astratta.
    Ho creato un ArrayList del tipo della classe astratta, che contiene oggetti istanziati dalle classi figlie, l'unico problema è che non riesco a richiamare i metodi delle classi figlie.

    struttura dati che contiene tutti gli oggetti:
    codice:
    ArrayList <ClassePadre> elementi = new <ClassePadre> ArrayList ();
    e io dovrei fare una cosa simile.. solo che il metodo setVariabile non è possibile chiamarlo perchè è della classe figlia.. come posso fare per risolvere?
    codice:
    elementi.get(1).setVariabile(4);

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ti serve un cast:

    ((ClasseFiglia) elementi.get(1)).setVariabile(4);

    Non è l'approccio migliore comunque... Il metodo che vuoi chiamare serve a tutte le classi figlie? Mettilo nella super classe allora...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Ti serve un cast:

    ((ClasseFiglia) elementi.get(1)).setVariabile(4);

    Non è l'approccio migliore comunque... Il metodo che vuoi chiamare serve a tutte le classi figlie? Mettilo nella super classe allora...
    Beh innanzitutto grazie per la risposta!
    ogni classe figlia "specializza" la classe astratta aggiungendo un metodo nuovo per ogni classe figlia
    Stavo pensando di fare un controllo col metodo getClass() ed a seconda del tipo della classe faccio un cast opportuno, così posso chiamare i metodi della classe figlia, solo che effettivamente non mi sembra proprio il massimo come soluzione..
    Meglio dichiarare tutto astratto nella classe padre? anche se i metodi nuovi sono diversi per ogni classe??

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Puoi usare instanceof per vedere se un oggetto X è istanza delle classe Y:

    if (elementi.get(i) instanceof ClassFiglia1) { ... }


    Per spostare tutto sulla superclasse... dipende da cosa fanno e da quanto sono "diversi" questi metodi...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.