Почему значение поля экземпляра становится нулевым?
У меня есть этот простой кусок кода.
abstract class X {
X() {
read();
}
private void read() {
Object obj = new Object();
readValue(obj);
}
protected abstract void readValue(Object obj);
}
class Y extends X {
Object obj = null;
Y() {
super();
}
@Override
protected void readValue(Object obj) {
this.obj = obj;
}
void printer() {
System.out.println("Object = " + obj);
}
}
class Runner {
public static void main(String[] args) {
Y y = new Y();
y.printer();
}
}
Когда я запускаю приведенный выше код, объект печатается как ноль. (Я получил"Объект = ноль")
Удивительно, но в классе Y, когда я удаляю нулевое объявление
Object obj;
Фактическая стоимость объекта печатается.
Что-то вроде ("Объект = java.lang.Object@3cd1a2f1")
Почему наблюдается такое поведение? На что указывает «это»? Любой объект инициализируется нулем, если мы просто объявляем его, тогда почему такое аберрантное поведение?