Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329

    Casting esplicito fra classi diverse

    Come si fa a esplicitare un casting, o meglio creare un metodo che crea un casting da una classe ad un'altra?
    Ad esempio se io volessi creare:

    class Persona, class Studente extends Persona, class Lavoratore extends Persona.

    Ora se io volessi fare:
    Persona p = new Persona();
    Studente s = new Studente();
    Lavoratore l = new Lavoratore();

    p=s;
    s=l;

    So che da "p" ad "s" il casting viene implicito , ma se io volessi creare un metodo che gestisse il casting???
    e da "s" ad "l", cosa devo fare?

    Grazie
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  2. #2
    Da Studente a Lavoratore non credo proprio tu possa farlo, sono "fratelli" mentre il casting puoi farlo solo da padre in figlio e viceversa (nel secondo caso devi esplicitarlo tu, se no potrebbe darti errore a runtime), ma non tra fratelli.
    Che io sappia

  3. #3
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Allora da figlio a padre non c'è bisogno di esplicitarlo... ma io vorrei sapere come e se c'è un metodo per esplicitare un casting.
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  4. #4
    questo è un casting esplicito

    s = (Studente)p;

    dà errore a runtime se "p" non è uno studente, quindi come hai fatto te. E' corretto se dichiari p così
    Persona p=new Studente();

    Spero di non sbagliarmi

  5. #5
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Studente s = new Studente();
    Persona p = s;

    Si può fare semplicemente così.... perchè come ho spiegato prima Student è un'estensione di Persona, indi per cui si può farlo.

    Io volevo sapere se si possa fare , creare un metodo che gestisca un casting nel modo in cui si vuole.
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  6. #6
    scusa puoi farmi un esempio, magari inventandoti del codice.....

  7. #7
    allora se ho capito bene:

    Studente extend Persona
    Lavoratore extend Persona

    Per me se devi "convertire" uno studente in un lavoratore (o viceversa) devi farti un metodo del tipo...

    codice:
    public class Studente extends Persona{
    
       //...
    
       public Lavoratore toLavoratore(){
    
          //...
       }
    
    }
    Ovviamente una cosa analoga sarà per il Lavoratore cioè un metodo " public Studente toStudente()"....

  8. #8
    Così restituisce un Lavoratore che dev'essere assegnato per forza ad un Lavoratore o superiore nell'albero dell'ereditarietà. Lui forse vorrebbe assegnare alla variabile "s" ciò che il metodo toLavoratore restituisce. Se la soluzione è questa, allora non avevo capito io. :P
    Sono curioso di scoprire...

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.