Рубрики

Блок инициализации экземпляра (IIB) в Java

В Java-программе операции могут выполняться над методами, конструкторами и блоками инициализации. Блоки инициализации экземпляра или IIB используются для инициализации переменных экземпляра. МИБы выполняются раньше конструкторов. Они запускаются каждый раз, когда создается объект класса.

  • Блоки инициализации выполняются всякий раз, когда класс инициализируется и перед вызовом конструкторов.
  • Они обычно размещаются над конструкторами в фигурных скобках.
  • Нет необходимости включать их в свои занятия.

   
// Java-программа для иллюстрации
// Блок инициализации экземпляра

class GfG

{

    // Блок инициализации экземпляра

    

        System.out.println("IIB block");

    }

     

    // Конструктор класса GfG

    GfG()

    {

        System.out.println("Constructor Called");

    }

    public static void main(String[] args)

    {

        GfG a = new GfG();

    }

}

Выход :

IIB block
Constructor Called

Блоки инициализации нескольких экземпляров в программе

Мы также можем иметь несколько МИБ в одном классе. Если компилятор находит несколько блоков IIB, то все они выполняются сверху вниз, то есть блок IIB, записанный сверху, будет выполняться первым.

// Java-программа для иллюстрации
// выполнение нескольких
// Блоки инициализации экземпляра
// в одной программе

class GfG

{

    // Блок инициализации экземпляра - 1

    

        System.out.println("IIB1 block");

    }

      

    // Блок инициализации экземпляра - 2

    {

        System.out.println("IIB2 block");

    }

      

    // Конструктор класса GfG

    GfG()

    {

        System.out.println("Constructor Called");

    }

      

    // Блок инициализации экземпляра - 3

    {

        System.out.println("IIB3 block");

    }

      

    // основная функция

    public static void main(String[] args)

    {

        GfG a = new GfG();

    }

}

Выход :

IIB1 block
IIB2 block
IIB3 block
Constructor Called

Блок инициализации экземпляра с родительским классом

Вы также можете иметь IIB в родительском классе. Код блока инициализации экземпляра выполняется сразу после вызова super () в конструкторе. Компилятор выполняет IIB родительского класса перед выполнением IIB текущего класса. Посмотрите на следующий пример.

// Java-программа для иллюстрации
// Блок инициализации экземпляра
// с супер ()

  
// Родительский класс

class B

{

    B()

    {

        System.out.println("B-Constructor Called");

    }

  

    {

        System.out.println("B-IIB block");

    }

  
}

  
// Дочерний класс

class A extends B

{

    A()

    {

        super();

        System.out.println("A-Constructor Called");

    }

    {

        System.out.println("A-IIB block");

    }

      

    // основная функция

    public static void main(String[] args)

    {

        A a = new A();

    }

}

Выход :

B-IIB block
B-Constructor Called
A-IIB block
A-Constructor Called

В приведенном выше примере компилятор пытается выполнить конструктор класса A, когда создается объект класса A. Но он находит оператор super () и сначала обращается к конструктору родительского класса. Порядок исполнения в этом случае будет следующим:
I. Блок инициализации экземпляра суперкласса
II. Конструкторы суперкласса
III. Блоки инициализации экземпляра класса
Внутривенно Конструкторы класса

Важные моменты:

  • Блоки инициализации экземпляра запускаются каждый раз, когда создается новый экземпляр.
  • Блоки инициализации запускаются в порядке их появления в программе
  • Блок инициализации экземпляра вызывается после вызова конструктора родительского класса (т.е. после вызова конструктора super ())

Связанная статья:
Блок инициализатора в Java

Эта статья предоставлена Вишалом Гаргом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Блок инициализации экземпляра (IIB) в Java

0.00 (0%) 0 votes