Quando doees la variabile di istanza viene inizializzata? È dopo il blocco del costruttore è fatto o prima?Quando vengono inizializzate le variabili di istanza e vengono assegnati i valori?
Considerate questo esempio:
public abstract class Parent {
public Parent(){
System.out.println("Parent Constructor");
init();
}
public void init(){
System.out.println("parent Init()");
}
}
public class Child extends Parent {
private Integer attribute1;
private Integer attribute2 = null;
public Child(){
super();
System.out.println("Child Constructor");
}
public void init(){
System.out.println("Child init()");
super.init();
attribute1 = new Integer(100);
attribute2 = new Integer(200);
}
public void print(){
System.out.println("attribute 1 : " +attribute1);
System.out.println("attribute 2 : " +attribute2);
}
}
public class Tester {
public static void main(String[] args) {
Parent c = new Child();
((Child)c).print();
}
}
USCITA:
Parent Constructor
Child init()
genitore Init()
Bambino Costruttore
attributo 1: 100
attributo 2: null
Quando la memoria per l'attributo 1 & 2 sono allocati nell'heap?
Curioso di sapere perché l'attributo 2 è NULL?
Ci sono difetti di progettazione?
BTW la terminologia Java per la variabile di istanza è "campo". –