preparazione terzo compitino Clicca QUI per vedere il messaggio nel forum |
ziplo |
se qualcuno ha domande o vuole rispondere lo faccia qui. |
ziplo |
io ad esempio ho un dubbio?
ma i costruttori di una sottoclasse devono avere per forza super o this? (vedi pagina346-7-8 del libro di java) |
ziplo |
altra domanda:
negli esercizi di preparazione c'è quello UML che è poco chiaro:
infatti nel compitino le soluzioni sono diverse rispetto alla preparazione per lo stesso.
esempio nel compitino 06-07 c'è la variabile a4 di tipo A, però istanza di D perchè a4=new D().
D possiede il metodo f(string x):int però nella soluzione dà errore la chiamata a4.f("355");
PERCHé????????????????????????? |
miky_stardust |
Originally posted by ziplo
io ad esempio ho un dubbio?
ma i costruttori di una sottoclasse devono avere per forza super o this? (vedi pagina346-7-8 del libro di java)
in pratica se tu non usi super o this come prima istruzione nel costruttore, il compilatore automaticamente richiama super(), cioè il costruttore senza argomenti della superclasse e se non lo trova, ti da errore...
nel caso di una sottoclasse diretta di Object puoi andare tranquillo perchè Object ha costruttore senza argomenti, se invece non è diretta di Object ma si trova dentro ad una gerarchia, devi controllare ci sia il costruttore senza argomenti nella superclasse... a questo punto è meglio richiamare super o this esplicitamente e ti togli il problema ^_^ |
miky_stardust |
Originally posted by ziplo
altra domanda:
negli esercizi di preparazione c'è quello UML che è poco chiaro:
infatti nel compitino le soluzioni sono diverse rispetto alla preparazione per lo stesso.
esempio nel compitino 06-07 c'è la variabile a4 di tipo A, però istanza di D perchè a4=new D().
D possiede il metodo f(string x):int però nella soluzione dà errore la chiamata a4.f("355");
PERCHé?????????????????????????
Poichè a4 è di tipo A, per risolvere l'overloading, si guarda il tipo e in A non c'è nessun metodo f con argomento String. E quindi da errore.
Metti il caso in cui ci fosse stato in A un f(String x): il compilatore avrebbe scelto quell'argomento e poi sarebbe partito dalla vera natura dell'oggetto, in questo caso D, per andare alla ricerca del metodo f(String x) più vicino... Partendo da D, il più vicino era quello della classe D stessa e si sarebbe eseguito quello...
spero si capisca... :sad: |
kintaro |
Io ho un'altra domanda!
Nei compitini del 27 Gennaio 2006 non capisco perchè:
- versione A: b=c2 Corretto
a1=c1 Errore
- versione B: b=c2 Corretto
- versione C: b=c2 Corretto
perchè????????? Io 'sti esercizi non li capirò mai!!!! :sad: |
miky_stardust |
Originally posted by kintaro
Io ho un'altra domanda!
Nei compitini del 27 Gennaio 2006 non capisco perchè:
- versione A: b=c2 Corretto
a1=c1 Errore
- versione B: b=c2 Corretto
- versione C: b=c2 Corretto
perchè????????? Io 'sti esercizi non li capirò mai!!!! :sad:
Nelle due domande che hai fatto sulla versione A per me ha sbagliato il prof... Ho scritto a computer le 4 classi A, B, C, D e poi ho fatto gli assegnamenti...
nel caso b=c2 non compila e invece nel caso a1=c1 compila.
idem nella versione B... b=c2 non compila
e anche nella C... |
|
|
|