PDA

Visualizza la versione completa : [java] disegnare uno stack


elly00
04-02-2004, 09:30
ciao a tutti!

sono in difficoltà nel capire il testo di questa domanda..
" Disegnare uno stack che viene generato per risolvere l'espressione in notazione postfissa 14 1 5 4 - + / 2 1 + + 2

Qualcuno mi può illuminare?

Poi una piccola domanda: un metodo statico può essere sovrascritto solo da un metodo statico o non si può fare?


GRAZIEEEEEEEEE!!!!

trevor
04-02-2004, 11:08
l'overriding dei metodi o la ridefinizione.. deve comunque mantenere la "signature" del metodo invariata, quindi nome, modifier d'accesso e tipo di ritorno devono essere gli stessi. in poche parole, un metodo statico può essere ridefinito solo come statico, altrimenti quello che si fa è in realtà un altro metodo.

per la prima domanda... mah qui non c'è un forum "matematica" ?!?! non so come aiutarti, non l'ho capita manco io :gren:

elly00
04-02-2004, 11:26
quindi il tipo di ritondo di un metodo sovrascritto o sovraccaricato deve SEMPRE rimanare lo stesso?

trevor
04-02-2004, 11:30
Originariamente inviato da elly00
quindi il tipo di ritondo di un metodo sovrascritto o sovraccaricato deve SEMPRE rimanare lo stesso?


dipende quello che intendi fare, se intendi ridefinirlo o overloadarlo... cmq anche il modifier d'accesso conta.

praticamente la "firma" del metodo è data dal nome e dai parametri


--->dai un occhiata qui per chiarimenti http://www.di.unipi.it/~monta/LSD-02/LSD/Introduzione/Ripasso/main.html

elly00
04-02-2004, 11:58
ma a quanto ne sapevo io se sovvrascrivo un metodo in una sottoclasse il numero tipo e ordine dei parametri devono essere identici. Devono essere diverso invece per il sovraccaricamento..

Non mi sembrava ci fosse un riferimento al ritorno del metodo..

elly00
04-02-2004, 12:03
ma a quanto ne sapevo io se sovvrascrivo un metodo in una sottoclasse il numero tipo e ordine dei parametri devono essere identici. Devono essere diverso invece per il sovraccaricamento..

Non mi sembrava ci fosse un riferimento al ritorno del metodo..

trevor
04-02-2004, 12:32
il ritorno del metodo non rientra nella definizione di firma, quindi se tu hai ad esempio una classe A con un metodo "int metodo(int a)"
poi per esempio la estendi con una classe B extends A
e dentro B fai "String metodo(int a)" ne il compilatore e ne la VM in fase di runtime possono identificare il metodo richiesto... non c'è modo di saperlo e quindi non è possibile farlo :)

elly00
04-02-2004, 12:38
ok sono d'accordo

il mio dubbio è questo...
se io sovrascrivo un metodo in questo modo ricevo errore in compilazione?

int allora (int c, int n);

in

float allora (int c, int n);

------------------
Se invece sovraccarico

int allora (int c, int n);

in

double allora (float c)


Cioè il fatto di cambiare il tipo del valore di ritorno può dare errore?
:dhò:

Angelo1974
04-02-2004, 12:44
Ciao.



int allora (int c, int n);

in

float allora (int c, int n);


int allora (int c, int n);

in

double allora (float c)

Allora per l'overloading dei metodi non è sufficiente cambiare il tipo di ritorno del metodo; il compilatore non riesce a capire quale metodo richiamare qualora dovesse utilizzarlo; è necessario cambiare la lista dei parametri in ingresso; ad esempio:

int allora (int c, int n);

in

float allora (int c, int n);

:nonono: :nonono:


int allora (int c, int n);

in

int allora ( float c )

oppure, come hai detto tu:

double allora (float c)

Va bene. Ciao :ciauz:

elly00
04-02-2004, 13:08
grazie!!!!

tu sai dirmi dettagli riguardo la prima domanda sullo stack?

GRAZIe ancora

Loading