Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    dubbio su cast tra classi

    ciao svolgendo un esecizio mi è venuto un dubbio..se facio un cast da una superclasse verso una sottoclasse è come "convertire" un oggetto in un altro(sempre però della stessa gerchia) giusto?
    Cioè se io ho:

    codice:
    for(Figura f:fig)
      if(f instanceof Rettangolo)
          Rettangolo r=(Rettangolo)f  //adesso r è una variabile  di tipo Rettangolo??
    Quindi r è una varibile di tipo Rettangolo giusto?
    Ultima modifica di el92; 28-01-2016 a 18:45

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    ciao svolgendo un esecizio mi è venuto un dubbio..se facio un cast da una superclasse verso una sottoclasse è come "convertire" un oggetto in un altro(sempre però della stessa gerchia) giusto?
    Il cast sui reference non cambia nulla nel valore del reference in sé e nemmeno nell'oggetto referenziato. Cambia solo la "visione" che si ha dell'oggetto.
    Se è un down-cast (verso un sotto-tipo), è soggetto a controllo a runtime, perché in Java non è lecito che un reference possa fare riferimento ad un oggetto per cui non valga la relazione IS-A.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    ok quindi r è visto come un Rettangolo(quindi posso eseguire i metodi di Rettangolo) ma in realtà è una Figura..giusto?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    ok quindi r è visto come un Rettangolo(quindi posso eseguire i metodi di Rettangolo) ma in realtà è una Figura..giusto?
    Non so come hai definito Figura (se astratta o no, preferibilmente astratta) ma sicuramente hai fatto che Rettangolo extends Figura.

    Quindi Rettangolo è-un Figura, ovunque è richiesto un Figura tu puoi passare lecitamente un oggetto Rettangolo. Ma il contrario è vero? Cioè dove è richiesto un Rettangolo tu puoi passare un Figura? Dipende. Questo è il caso che richiede appunto un down-cast, che è controllato a runtime.

    Nel tuo fig potresti avere oggetti Rettangolo, Cerchio (altro che hai fatto ecc..). Se l'oggetto i-esimo è-un Rettangolo, allora il test con instanceof passerà ok e anche il cast. Se fosse altro, es. un oggetto Cerchio, allora instanceof fallisce ma essendo una condizione non succede nulla di grave (non esegue il corpo del if). Se facessi direttamente il cast, con Cerchio il cast fallisce a runtime con ClassCastException.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    grazie sei stato chiarissimo

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.