Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Domanda di teoria

    Ragazzi un piccolo aiuto, ho un piccolo esercizio :

    Si consideri il seguente frammento di codice in linguaggio Java:

    public void foo(Object obj){
    ...
    Veicolo veicolo = (Veicolo) object;
    ...
    }
    Rispetto alla linea evidenziata in grassetto:
    (a) spiegarne brevemente il significato;
    (b) spiegare la differenza tra tipo static type e dynamic type
    (c) cosa accade se lo static type dell'oggetto riferito da object è una superclasse di Veicolo?
    (d) cosa accade se lo static type dell'oggetto riferito da object è una sottoclasse di Veicolo?

    Sono riuscito a rispondere solo alla (b) : Il tipo statico è quello che viene usato nella dichiarazione della variabile, è determinato a tempo di compilazione. Il compilatore permette di invocare i metodi del tipo statico (ovvero verifica che su una variabile siano invocati i metodi del suo tipo statico).
    Il tipo dinamico è quello dell'oggetto realmente istanziato e quindi referenziato in memoria e stabilisce quale sarà l'implementazione usata. E' giusto?
    Per la (a) mi viene in mente che è un upcasting (giusto?) e non altro... mentre le altre due?
    Grazie!

  2. #2

    Re: Domanda di teoria

    Allora per quanto riguarda la risposta B essa è parzialmente corretta avrei solo precisato che il compilatore permette di invocare i metodi del tipo statico o della sua superclasse.
    Risposte
    (a) spiegarne brevemente il significato;
    Casting esplicito di un oggetto (breve,sintetico e conciso)
    (c) cosa accade se lo static type dell'oggetto riferito da object è una superclasse di Veicolo?
    Errore a runtime casting illegale
    (d) cosa accade se lo static type dell'oggetto riferito da object è una sottoclasse di Veicolo?
    Operazione lecita la sottoclasse è(is a) un veicolo

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    Re: Domanda di teoria

    Originariamente inviato da OltreLeStelle
    Ragazzi un piccolo aiuto, ho un piccolo esercizio :

    Si consideri il seguente frammento di codice in linguaggio Java:

    public void foo(Object obj){
    ...
    Veicolo veicolo = (Veicolo) object;
    ...
    }
    Rispetto alla linea evidenziata in grassetto:
    (a) spiegarne brevemente il significato;
    (b) spiegare la differenza tra tipo static type e dynamic type
    (c) cosa accade se lo static type dell'oggetto riferito da object è una superclasse di Veicolo?
    (d) cosa accade se lo static type dell'oggetto riferito da object è una sottoclasse di Veicolo?

    Sono riuscito a rispondere solo alla (b) : Il tipo statico è quello che viene usato nella dichiarazione della variabile, è determinato a tempo di compilazione. Il compilatore permette di invocare i metodi del tipo statico (ovvero verifica che su una variabile siano invocati i metodi del suo tipo statico).
    Il tipo dinamico è quello dell'oggetto realmente istanziato e quindi referenziato in memoria e stabilisce quale sarà l'implementazione usata. E' giusto?
    Per la (a) mi viene in mente che è un upcasting (giusto?) e non altro... mentre le altre due?
    Grazie!
    io ti consiglio di rivedere bene la teoria, perché statico e dinamico non ha solo quelle differenze.
    Tieni conto che sono diversi i punti in memoria in cui viene memorizzato un dato statico e uno dinamico, tutte le istanze di un oggetto condividono un dato statico, mentre un qualcosa di dinamico ha il suo spazio.
    Per farti un esempio

    codice:
    public class Esempio{
         public static String esempio = "PIPPO"; 
         public String esempio2 = "ciao"; 
    }
    qui hai che 2 istanze di Esempio quando si riferiscono ad esempio si riferiscono allo stesso valore, mentre quando si riferiscono a esempio2 si riferiscono a 2 valori differenti (infatti se in una cambi esempio2 e la leggi dall'altra leggi un valore differente).
    Riguardo ai metodi statici, vale quanto detto da francesco.

    Gli altri punti ovviamente ti sono stati indicati, ma rivedere un po la teoria (e bene gli esempi su gerarchia di classi) ti consentono di trovare brevemente la risposta
    RTFM Read That F*** Manual!!!

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.