Seether
15-07-2008, 11:23
Ciao a tutti, avrei un paio di domande sul seguente frammento di 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();
}
}
L'output di questo programma è il seguente:
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
Nell'output, le ultime quattro righe sono tutte relative all'istanziamento dell'oggetto "terzo", ma non mi sono troppo chiare... Cosa provoca esattamente ciascuna di esse, e qual è la ragione precisa del loro ordine? Inoltre, come si spiega che nella prima mi ritrovo anche col costruttore di "a" in un oggetto di tipo "b"?
Grazie mille anticipatamente :)
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();
}
}
L'output di questo programma è il seguente:
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
Nell'output, le ultime quattro righe sono tutte relative all'istanziamento dell'oggetto "terzo", ma non mi sono troppo chiare... Cosa provoca esattamente ciascuna di esse, e qual è la ragione precisa del loro ordine? Inoltre, come si spiega che nella prima mi ritrovo anche col costruttore di "a" in un oggetto di tipo "b"?
Grazie mille anticipatamente :)