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.
Cara Inisialisasi Block Instance
class MyClass {
// Inisialisasi
// blok instance
{
// kode inisialisasi
}
// Konstruktor dan lainnya
}
Contoh Penggunaan Inisialisasi Block Instance
class Person {
String name;
int age;
// Inisialisasi blok instance
{
name = "Unknown";
age = 0;
}
// Konstruktor
public Person(String name,
int age)
{
this.name = name;
this.age = age;
}
// Metode lainnya
}
// 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 Inisialisasi Instance Multiple Block
// 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
Block Inisialisasi Instance dengan Parent Class
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.
- Menginisialisasi Variabel Instance: Salah satu fungsi utama inisialisasi blok instance adalah untuk menginisialisasi nilai awal dari variabel instance kelas sebelum konstruktor dijalankan.
- Menyediakan Kode Inisialisasi Tambahan: Dalam beberapa kasus, pengembang mungkin perlu melakukan inisialisasi yang lebih kompleks daripada sekadar memberikan nilai awal statis. Dengan inisialisasi blok instance, pengembang dapat menuliskan kode yang lebih kompleks untuk menginisialisasi variabel, termasuk perhitungan atau logika lainnya.
- Menghindari Duplikasi Kode: Jika ada beberapa konstruktor dalam kelas, dan semua konstruktor memerlukan inisialisasi yang sama untuk variabel instance, maka inisialisasi blok instance dapat membantu menghindari duplikasi kode dengan menempatkan kode inisialisasi dalam satu blok yang sama.
- Keterbacaan Kode yang Menurun: Penempatan logika inisialisasi di dalam blok instance, terutama jika kompleks, dapat membuat kelas menjadi sulit untuk dipahami. Terutama jika inisialisasi tersebut tersebar di beberapa bagian kelas, hal ini dapat mempersulit pemahaman alur eksekusi program.
- Keterbatasan dalam Penanganan Pengecualian: Ketika kode dalam blok inisialisasi melemparkan pengecualian (exception), penanganan pengecualian menjadi lebih rumit. pengembang harus mempertimbangkan bagaimana menangani pengecualian dalam blok inisialisasi dengan hati-hati, terutama jika blok tersebut dieksekusi sebelum konstruktor dijalankan.
- Kemungkinan Duplikasi Kode: Meskipun salah satu manfaatnya adalah untuk menghindari duplikasi kode, ada juga kemungkinan bahwa logika inisialisasi yang sama harus diulang di beberapa konstruktor dalam kelas. Dalam hal ini, inisialisasi blok instance mungkin tidak memberikan manfaat yang signifikan.
- Kompleksitas yang Tidak Diperlukan: Terkadang, kompleksitas yang diperlukan untuk melakukan inisialisasi dalam blok instance mungkin tidak sebanding dengan manfaat yang diberikannya. Ini bisa terjadi jika inisialisasi yang dilakukan adalah sederhana dan tidak memerlukan logika yang rumit.
- Penggunaan yang Berlebihan: Menggunakan inisialisasi blok instance secara berlebihan dalam kelas dapat membuat kelas menjadi sulit dipelajari dan dipahami. Terlalu banyak inisialisasi blok instance juga dapat mengaburkan batas antara apa yang seharusnya dilakukan di dalam konstruktor dan apa yang seharusnya dilakukan di luar.
Kesimpulan
- Inheritance dan Constructor Java dan Fungsinya
- Interface dan Inheritance Java dan Fungsinya
- Menggunakan Final Inheritance Java dan Fungsinya
- Mengakses Anggota Grandparent Java Menggunakan Keyword Super
- Method Private Overriding Java dan Fungsinya
- Method Class Derived Java dan Fungsinya
- Parent dan Child Class Java Dengan Anggota Data Sama
6 komentar untuk "Cara Inisialisasi Block Instance Java dan Fungsinya"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -
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