Вот мой фрагмент кода, где я доверяю блокам инициализации
class Father{
Father() {
System.out.println("Father constructor runs...");
}
static {System.out.println("static init block of Father...");}
{System.out.println("instance init block of Father...");}
}
class Child extends Father {
Child () {
System.out.println("Child constructor runs...");
}
static {System.out.println("static init block of Child ...");}
{System.out.println("instance init block of Child ...");}
public static void main (String[] argv) {
new Child();
}
}
Два класса скомпилированы в один файл класса: Child.class
Я запускаю его с командной строки java Child
это мой вывод:
static init block of Father...
static init block of Child ...
static init block of Child ...
instance init block of Father...
Father constructor runs...
instance init block of Child ...
Child constructor runs...
У меня все в порядке с этим выводом, за исключением того факта, что «статический блок инициализации Child ...» печатается дважды. Из документации Java я прочитал «Статические блоки инициализации запускаются ОДИН РАЗ, когда класс загружается впервые».
Значит ли это, что мой класс Child загружается дважды ??
Любая помощь приветствуется
Спасибо
Alberto