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

    Domanda semplice teorica sull'ereditarietà

    Ciao a tutti

    Quando io in una sottoclasse s decido di sovrascrivere un metodo della sua superclasse S (ossia decido di riutilizzare quanto già fa un metodo di S, con qualche piccola variante funzionale a quanto devo fare in s), ridefinisco il metodo con la stessa intestazione e nel corpo del metodo, una volta "aggiunto" la variante che volevo fare, richiamo il metodo di Sattraverso la sintassi:

    super.nomeMetodo(..).

    Fin qua tutto chiaro giusto?

    Ecco la mia domanda è la seguente: se il metodo della superclasse S ha un valore di ritorno, e io nella sottoclasse voglio modificare il metodo con un'operazione che non va a influire sul valore di ritorno (ad esempio inserisco un contatore: ogni volta che viene eseguito quel metodo viene incrementato di uno), comunque nel corpo del metodo devo inserire la parola "return", anche se il return lo dovrebbe già fare il metodo della superclasse? Altrimenti il compilatore mi da errore di mancanza di valore di ritorno".

    Provo a spiegarmi meglio con un esempio:

    codice:
    public SottoClasse{
         public static int metodoDaSovrascrivere(...){
             variante
             super.metodoDellaSuperClasse(..)
         }

    Questo codice risulta errato perché manca il valore di ritorno. JAVA richiede sempre che io lo metta anche se il ritorno dovrebbe essere già effettuato nella superclasse?

    E' un concetto un po' macchinoso spero di essermi spiegato.
    Ultima modifica di LeleFT; 22-12-2014 a 14:19 Motivo: Sistemata formattazione e aggiunti tag CODE

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ovviamente sì.
    Ciò che verrà eseguito è il tuo metodo... quel che fa il tuo metodo al compilatore non importa, lui deve solo verificare che quel metodo ha un valore di ritorno e quindi deve ritornare qualcosa... chi sia che materialmente fa il lavoro di calcolare il risultato non frega niente a nessuno.

    Il metodo della superclasse, infatti, il valore lo ritorna al tuo metodo... mica a chi l'ha chiamato. E' il tuo metodo che deve prendere questo valore e farlo avere al suo chiamante.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Fatti la domanda che metodo viene invocato da java quella della Super classe e quello della tua sottoclasse ?

  4. #4
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Ovviamente sì.
    Ciò che verrà eseguito è il tuo metodo... quel che fa il tuo metodo al compilatore non importa, lui deve solo verificare che quel metodo ha un valore di ritorno e quindi deve ritornare qualcosa... chi sia che materialmente fa il lavoro di calcolare il risultato non frega niente a nessuno.

    Il metodo della superclasse, infatti, il valore lo ritorna al tuo metodo... mica a chi l'ha chiamato. E' il tuo metodo che deve prendere questo valore e farlo avere al suo chiamante.


    Ciao.
    Grazie mille. Chiarissimo. Compreso

Tag per questa discussione

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.