В Java порядок вызова конструкторов и блоков инициализации в классе и его иерархии определяется следующим образом: Parent static block(s) → Child static block(s) → Grandchild static block(s) → Parent non-static block(s) → Parent constructor → → Child non-static block(s) → Child constructor → → Grandchild non-static block(s) → Grandchild constructor Например, рассмотрим следующий код: class Base {
static {
System.out.println("Статический блок инициализации базового класса");
}
Base() {
System...
В предыдущей части я был приятно удивлён тем, что для создания экземпляра класса на стеке не требуется оператор new, как в других языках: Всё происходит как обычное объявление переменной нужного типа, и объект уже создан (на стеке), и даже вызван его конструктор. На третий день Зоркий Глаз увидел, что в C++ всё-таки используется new: MyClass* test = new MyClass(); Можно писать new MyСlass со скобками или без скобок, но про это позже. А пока про new. На деле оператор new выделяет память под объект из кучи...