Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Originariamente inviato da valia
    In generale NO e ti spiego il motivo:

    se tu hai un veicolo v inizializzato in un momento t, se dopo 10 istruzioni fai

    codice:
    Macchina fiat = v;
    assegni a fiat il riferimento di v. Significa che adesso hai 2 contenitori (variabili) che puntano (passami il termine) allo stesso oggetto.

    ma se tu fai
    codice:
    Veicolo v = new Veicolo(); 
    //dopo un po'
    Macchina fiat = new Veicolo();
    a fiat assegni un riferimento ad un oggetto di tipo veicolo, che non è lo stesso di v!!Adesso in memoria hai 2 oggetti di tipo veicolo referenziati da 2 variabili.

    Anche quando fai

    codice:
    Veicolo v = new Veicolo(); 
    Macchina fiat = v;
    qui hai in fiat un riferimento ad un'istanza pulita (appena nata) di veicolo, in memoria hai un solo oggetto, ma 2 riferimenti vi puntano.

    Riepilogando: l'assegnamento (fiat = v)comporta 2 riferimenti che puntano allo stesso oggetto, il new comporta avere 2 riferimenti che puntano ad oggetti differenti.

    Riguardo la prima domanda, l'esercizio vuole farti degli esempi su ereditarietà e polimorfismo
    intanto grazie delle risposte, e scusate se insisto...

    codice:
     
    
    Veicolo v = new Veicolo(); 
    //dopo un po'
    Macchina fiat = new Veicolo();
    ora è chiaro che con questo codice ho 2 oggetti referenziati con 2 variabili distinte che puntano ad un oggetto di tipo Veicolo... il dubbio che mi sorge è il seguente:
    se fiat è un oggetto di tipo Veicolo, perche nell'esercizio è scritto il codice
    codice:
    Macchina fiat = new Veicolo();
    invece di
    codice:
    Veicolo fiat = new Veicolo();
    grazie in anticipo e scusate la banalità!!!

  2. #12
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    Originariamente inviato da pasqualissimo
    intanto grazie delle risposte
    Prego, se poi tu le leggessi le risposte i ringraziamente sarebbero più sinceri

    repeat, se c'è scritto
    Macchina fiat = new Veicolo();
    è sbagliato, ti da errore in compilazione

  3. #13
    Originariamente inviato da pasqualissimo
    codice:
     
    Veicolo v = new Veicolo(); 
    //dopo un po'
    Macchina fiat = new Veicolo();
    Si chiama principio di sostituzione (o polimorfismo di inclusione).
    Veicolo e' superclasse di Macchina, quindi una variabile di tipo Veicolo puo' essere istanziata ad un oggetto di tipo Macchina, questo perche' Macchina contiene tutti i metodi e campi di Veicolo. Il contrario NON puo' essere fatto ecco perche' il codice genera un errore di compilazione.
    Come e' stato gia' detto occorre fare il cast
    codice:
    Macchina fiat = (Macchina) v;

  4. #14
    Originariamente inviato da pier_IP
    Si chiama principio di sostituzione (o polimorfismo di inclusione).
    Veicolo e' superclasse di Macchina, quindi una variabile di tipo Veicolo puo' essere istanziata ad un oggetto di tipo Macchina, questo perche' Macchina contiene tutti i metodi e campi di Veicolo. Il contrario NON puo' essere fatto ecco perche' il codice genera un errore di compilazione.
    Come e' stato gia' detto occorre fare il cast
    codice:
    Macchina fiat = (Macchina) v;


    codice:
    Macchina v = new Macchina;
    e un codice del genere avrebbe lo stesso risultato????

  5. #15
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ti ho già detto di no perché con new crei un nuovo oggetto di tipo Macchina, con il cast prendi un oggetto di tipo veicolo e ne assegni il riferimento a fiat, ma non hai creato un nuovo oggetto

  6. #16
    Originariamente inviato da pasqualissimo
    codice:
    Macchina v = new Macchina;
    e un codice del genere avrebbe lo stesso risultato????
    Quello lancia un errore di compilazione, mancano le parentesi ().
    codice:
    Macchina v = new Macchina();

  7. #17
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da pasqualissimo
    codice:
    Macchina v = new Macchina;
    e un codice del genere avrebbe lo stesso risultato????
    Ricorda che quando usi new stai andando a creare un nuovo oggetto!
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.