Я записал эту мини-программу:Когда конструктор инициализирует?
A
класс:
public class A
{
public A()
{
System.out.println(getS());
}
public String getS() { return s;}
}
B
класс:
public class B extends A
{
private String s = "hello2";
public String getS() { return s;}
}
main
:
public static void main(String[] args)
{
B b = new B();
}
и напечатал:
null
Почему это так?
Я знаю, что строка, напечатанная строка B, но почему она не инициализировалась раньше?
По this answer - переменная инициализируется перед конструктором ..
EDIT - я редактировал код так, несвязанный код не будет путать
Поиск руководства по OO и конструктору по умолчанию. Тогда это было бы совершенно очевидно. – AxelH
Возможный дубликат [Как работает конструктор при инициализации объекта?] (Http://stackoverflow.com/questions/23263369/how-does-the-constructor-work-while-initializing-an-object) –
@dasblinkenlight Благодаря! Исправлено. –