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

    [java] esercizio

    Si dica cosa viene stampato dall’esecuzione della classe Java SubClasse, definita come segue:

    class SuperClasse {
    public String s = "SUPER";
    public void stampa() {
    System.out.println(s);
    }
    }

    class SubClasse extends SuperClasse {
    public String s = "SUB";
    public void stampa() {
    System.out.println(s);
    }
    public static void main(String[] args) {
    SubClasse sub = new SubClasse();
    SuperClasse sup = sub;
    sup.stampa();
    sub.stampa();
    System.out.println(sup.s);
    System.out.println(sub.s);
    }
    }

    Da quello che ho capito stamperà

    SUPER
    SUB
    SUPER
    SUB

    è giusto??
    La differenza fra un cammello e un uomo? Il cammello può lavorare una settimana senza bere. L'uomo può bere una settimana senza lavorare. (Julian Tuwim)

    A casa mia non si mangia mai a stomaco vuoto!!!

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    No, stampera

    SUB
    SUB
    SUPER
    SUB


    infati la prima istruzione è sup.stampa(); sup è dichiarato come reference alla superclasse ma punta a un oggetto della sottoclasse e quindi è il metodo della sottoclasse ad essere eseguito e stamperà il campo s della sottoclasse visto che avendo lo stesso nome diq uello della superclasse lo oscura.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    Originariamente inviato da anx721
    No, stampera

    SUB
    SUB
    SUPER
    SUB


    infati la prima istruzione è sup.stampa(); sup è dichiarato come reference alla superclasse ma punta a un oggetto della sottoclasse e quindi è il metodo della sottoclasse ad essere eseguito e stamperà il campo s della sottoclasse visto che avendo lo stesso nome diq uello della superclasse lo oscura.
    E lo stesso discorso non è valido per System.out.println(sup.s);
    sup.s non è oscurato da sub.s??
    La differenza fra un cammello e un uomo? Il cammello può lavorare una settimana senza bere. L'uomo può bere una settimana senza lavorare. (Julian Tuwim)

    A casa mia non si mangia mai a stomaco vuoto!!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    sup.stampa() : sup è sub(sottotipo di sup), quindi stampa() è proprio di sub (overriding)
    sup.s : non fa riferimento al sottotipo

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.