Cara Inisialisasi Block Instance Java dan Fungsinya
- Block inisialisasi dieksekusi kapanpun class diinisialisasi dan sebelum constructor dipanggil.
- IIB biasanya ditempatkan di atas constructor dengan tanda kurung.
- Pada IIB tidak semuanya bersifat penting untuk dimasukkan ke dalam class.
// Program Java
// mengilustrasikan block
// inisialisasi instance.
class MKN
{
// Instance Initialization
// Block (IIB).
{System.out.println("IIB block");}
// Constructor dari MKN class.
MKN(){
System.out.println("Constru"
+"ctor dipanggil");}
public static void main(String[] args)
{MKN a = new MKN();}
}
Constructor dipanggil
// Program Java
// mengilustrasikan eksekusi
// dari multiple block
// inisialisasi instance dalam
// satu program.
class MKN
{
// Instance Initialization
// Block - 1.
{System.out.println("IIB1"
+" block");}
// Instance Initialization
// Block - 2.
{System.out.println("IIB2"
+" block");}
// Constructor dari class MKN.
MKN()
{System.out.println("Constru"
+"ctor dipanggil");}
// Instance Initialization
// Block - 3.
{System.out.println("IIB3"
+" block");}
/* main function */
public static void main(String[] args)
{MKN a = new MKN();}
}
IIB2 block
IIB3 block
Constructor dipanggil
IIB dapat dimiliki oleh parent class, dimana kode program block inisialisasi instance akan dijalankan terlebih dahulu setelah memanggil super() dalam sebuah constructor. Kompilator akan mengeksekusi parent class dari IIB sebelum mengeksekusi class IIB saat ini. Perhatikan contoh berikut ini.
// Program Java
// mengilustrasikan block
// inisialisasi instance
// dengan super().
/* Parent Class */
class B
{
B()
{System.out.println("B-Cons"
+"tructor dipanggil");}
{System.out.println("B-IIB"
+" block");}
}
/* Child class */
class A extends B
{
A()
{super();
System.out.println("A-Const"
+"ructor dipanggil");}
{System.out.println("A-IIB"
+" block");}
/* main function */
public static void main(String[] args)
{A a = new A();}
}
B-Constructor dipanggil
A-IIB block
A-Constructor dipanggil
Pada contoh sebelumnya, kompilator mencoba mengeksekusi constructor dari class A, ketika object dari class A diciptakan. Tetapi pada saat eksekusi program, kompilator menemukan statement super() dan menuju ke contructor parent class terlebih dahulu untuk dieksekusi. Perintah dari eksekusi dalam kasus ini adalah sebagai berikut:
- Block inisialisasi instance dari super class
- Constructor dari super class
- Block inisialisasi instance dari class
- Constructor dari class
Point penting:
- Block inisialisasi instance akan dijalankan setiap instance baru diciptakan.
- Block inisialisasi dijalankan dalam perintah untuk tampil dalam program.
- Block inisialisasi instance dipanggil setelah constructor parent class dipanggil yaitu setelah constructor super() dipanggil.
Apa yang dimaksud dengan IIB pada Java?
BalasHapusDalam program Java, operasi dapat dilakukan pada method, constructor, dan block inisialisasi. Instance Initialization Blocks atau IID digunakan untuk melakukan inisialisasi variabel instance dalam bahasa pemrograman Java. Inisialisasi block dijalankan setiap kali class diinisialisasi dan sebelum constructor dipanggil.
HapusApa perbedaan antara SIB dan IIB pada Java?
BalasHapusSIB adalah Static Initialization Block yang dijalankan ketika class dimuat dan hanya dijalankan sekali dalam seluruh eksekusi IIB. Sedankan IIB atau Instance Initialization Block dijalankan ketika constructor dipanggil tetapi sebelum eksekusi contructor dijalankan.
HapusApakah dapat memiliki IIB Block dan static block dalam class yang sama?
BalasHapusIIB juga dijalankan untuk menginisialisasi variabel pada Java. Dimana proses tersebut akan mengeksekusi block static yang dideklarasikan di dalam class Java.
Hapus