Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Esercizio classi

  1. #1

    Esercizio classi

    Ciao a tutti volevo chiedervi una mano per capire questo esercizio sulle classi:

    codice:
    class A {
    
        int a = 0;
        int b = 0;
    
        public A() {
          a = calcola();
        }
    
        public int calcola() { 
          return a+1;
        }
    }
    
    class B extends A {
    
        public int calcola() {
           b = a+2;
           return b+1;
        }
    }
    Ora date queste classi devo riportare l'output prodotto dalle seguenti istruzioni:

    A aObj = new A();
    B bObj = new B();
    System.out.println(aObj.a);
    System.out.println(bObj.a);
    System.out.println(bObj.b);

    La soluzione dell'esercizio è 1, 2, 3 rispettivamente per la prima, seconda e terza istruzione.

    Potreste spiegarmi come funziona?

    Grazie

  2. #2
    nessuna idea?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Originariamente inviato da ferra03
    nessuna idea?
    I risultati sono 1, 3, 2 e non 1, 2, 3.

    Cosa non capisci della sequenza di inizializzazioni?
    al volante son nervoso

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    no si (giusto un dubbio sulla seconda istruzione )

    tu ce l'hai qualche idea?

    Dicci che idea ti sei fatto e ne discutiamo insieme...è il modo migliore per imparare e ricordarsi una cosa!!
    Jekkil

  5. #5
    (si scusa sono 1, 3, 2)

    allora per quanto riguarda la prima istruzione viene invocato il costruttore di a che assegna ad a il metodo calcola ed essendo a=0 di conseguenza stampa 1...(almeno credo che questo sia il ragionamento giusto...), poi per quanto riguarda la seconda istruzione viene usato il metodo calcola ridefinito in class B, quindi essendo a = 0 viene assegnato 2 a b, poi il metodo ritorna b + 1 quindi 3...Ma l'ultimo proprio non riesco a capirlo.... (sempre ammettendo che stia facendo un ragionamento corretto)

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Originariamente inviato da ferra03
    (si scusa sono 1, 3, 2)

    allora per quanto riguarda la prima istruzione viene invocato il costruttore di a che assegna ad a il metodo calcola ed essendo a=0 di conseguenza stampa 1...(almeno credo che questo sia il ragionamento giusto...), poi per quanto riguarda la seconda istruzione viene usato il metodo calcola ridefinito in class B, quindi essendo a = 0 viene assegnato 2 a b, poi il metodo ritorna b + 1 quindi 3...Ma l'ultimo proprio non riesco a capirlo.... (sempre ammettendo che stia facendo un ragionamento corretto)
    hai appena scritto che viene assegnato a b il valore 2... quindi... l'hai capito...
    al volante son nervoso

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    allora per quanto riguarda la prima istruzione viene invocato il costruttore di a che assegna ad a il metodo calcola ed essendo a=0 di conseguenza stampa 1...(almeno credo che questo sia il ragionamento giusto...)
    corretto!

    poi per quanto riguarda la seconda istruzione viene usato il metodo calcola ridefinito in class B, quindi essendo a = 0 viene assegnato 2 a b, poi il metodo ritorna b + 1 quindi 3
    corretto anche questo.
    Quindi a questo punto l'oggetto di tipo B avrà entrambi gli attributi settati giusto?

    b=2; (settato all'interno del metodo calcola() ridefinito in B)
    a=3; (settato dal metodo calcola())

    giusto?

    Quindi, come hai detto giustamente prima, la seconda istruzione ritorna 3, e la terza...per forza di cose 2...

    quindi...

    hai appena scritto che viene assegnato a b il valore 2... quindi... l'hai capito...
    concordo!!
    Jekkil

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Originariamente inviato da Jekkil
    corretto!



    corretto anche questo.
    Quindi a questo punto l'oggetto di tipo B avrà entrambi gli attributi settati giusto?

    a=2; (settato all'interno del metodo calcola() ridefinito in B)
    b=3; (settato dal metodo calcola())

    giusto?

    Quindi, come hai detto giustamente prima, la seconda istruzione ritorna 3, e la terza...per forza di cose 2...

    quindi...



    concordo!!
    No Jekkil. bObj.b vale 2 e bObj.a vale 3, e non il contrario.
    al volante son nervoso

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    hai ragione...mi sono confuso...grazie...ho provveduto a modificare il messaggio...

    grazie per la correzione...sai com'è..a st'ora...dopo 15 ore al pc....
    Jekkil

  10. #10
    quello che non capisco è perchè l'istruzione bObj.b ritorna 2 e non 3.... non esegue il metodo calcola della classe B?

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.