|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2002
Messaggi: 202
|
[Java] Problema da principiante con this.()
Ebbene sì, sono alle prime sperimentazioni con java.....
Un esercizio che ha scopo puramente didattico per apprendere il duplice utilizzo di 'this'. Se i metodi "ProvaDiThis" hanno come tipo di ritorno void, ottengo il seguente errore: <call to this must be first statement in costructor... > Non riesco a comprenderne il perchè. Mi potreste aiutare?? Grazie Ecco il codice: --- public class ProvaDiThis { public int unNumero=0; public int unAltroNumero=0; ProvaDiThis(int nome) { unNumero=nome; System.out.println("var di istanza inizializzata normalmente: unNumero="+unNumero); } ProvaDiThis(int nome, int unAltroNumero) { this(nome); this.unAltroNumero=unAltroNumero; } ProvaDiThis() { this(11,114); System.out.println(" bla... bla...\n"); } void FinalMeth() { System.out.println("unNumero vale: "+unNumero+"\nunAltroNumero vale: "+unAltroNumero); } public static void main (String args[]) { ProvaDiThis obj =new ProvaDiThis(); obj.FinalMeth(); } } --- |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2000
Messaggi: 113
|
Hmm.. nn ho ben capito quand'è che trovi l'errore, cmq i ProvaDiThis sono costruttori, non metodi, per cui hanno solo il compito di creare nuovi oggetti e non restituiscono nulla.
La roba che hai postato funziona. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
come ti e' stato detto
ProvaDiThis(int nome) ProvaDiThis(int nome, int unAltroNumero) ProvaDiThis() sono tre costruttori che prendono differenti parametri. con this(...) chiami un costruttore da un altro ma se lo fai deve essere la prima istruziona all'interno di un costruttore. E' una scelta di design del linguaggio per garantire che gli oggetti vengano costruiti adeguatamente e senza possibili comportamenti anomali. anche se chiami super(...) la chiamata deve essere la prima istruzione. |
|
|
|
|
|
#4 | ||
|
Member
Iscritto dal: Jul 2002
Messaggi: 202
|
Quote:
comunque l'avevo detto all'inizio: non sono affatto preparato!! Quote:
Però adesso ho capito l'errore!! Grazie mille! |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:25.



















