¿Cuándo se inicializa la variable de instancia? ¿Es después de que el bloque del constructor haya terminado o antes?¿Cuándo se inicializan las variables de instancia y se asignan los valores?
Considere este ejemplo:
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();
}
}
SALIDA:
Constructor de Padres
Child init()
padre Init()
Constructor Child
atributo 1: 100
atributo 2: null
Cuando el memoria para el atributo 1 & 2 se asignan en el montón?
la curiosidad de saber qué está atributo 2 es NULL?
¿Hay defectos de diseño?
BTW la terminología de Java, por ejemplo, la variable es "campo". –