|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Feb 2008
Messaggi: 27
|
[Java] Perchè questo output?
Ciao a tutti, avrei un paio di domande sul seguente frammento di codice:
Codice:
class a {
public a() {
System.out.println("Costruttore di a senza parametri "+this.toString()+" "+this.getClass());
}
public a(int s) {
System.out.println("Costruttore di a con un parametro "+this.toString()+" "+this.getClass());
}
}
class b extends a {
a test = new a(8);
int e;
public b (int x) {
e = x;
System.out.println("Costruttore di b con un parametro "+this.toString()+" "+this.getClass());
}
public b () {
this(9);
System.out.println("Costruttore di b senza parametri"+this.toString()+" "+this.getClass());
}
}
public class prova {
public static void main(String args[]) {
a primo = new a(0);
a secondo = new a(3);
System.out.println("");
b terzo = new b();
}
}
Codice:
Costruttore di a con un parametro a@3e25a5 class a Costruttore di a con un parametro a@19821f class a Costruttore di a senza parametri b@addbf1 class b Costruttore di a con un parametro a@42e816 class a Costruttore di b con un parametro b@addbf1 class b Costruttore di b senza parametrib@addbf1 class b Grazie mille anticipatamente |
|
|
|
|
|
#2 | ||
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
Quote:
|
||
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Feb 2008
Messaggi: 27
|
Quindi se ho capito bene l'invocazione del costruttore della classe genitrice avviene comunque PRIMA dell'istanziamento delle variabili della classe figlia, no?
Ok, grazie mille ^^ |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
L'odine di esecuzione durante l'inizializzazione di un oggetto di una data classe è il seguente (vado a memoria quindi perdonate/corregete errori e omisisoni):
- blocchi statici; - costruttore/i (delle eventuali classi antenate nella catena di eredità); - inizializzazione dei membri dichiarati (ai valori di default da parte della jvm); - costruttore (della classe in oggetto). @EDIT: Seether hai ragione, grazie della correzione, ho corretto il post anch'io.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 15-07-2008 alle 13:19. |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Feb 2008
Messaggi: 27
|
In teoria, come si evince da questo stesso esempio, le variabili di istanza sono inizializzate *prima* del costruttore della classe che le contiene, ma comunque *dopo* il costruttore della classe genitrice (ammesso che esista).
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:58.



















