Dalam pemrograman berorientasi objek, konstruktor adalah fungsi khusus yang Anda panggil untuk membuat objek. Konstruktor memiliki beberapa fitur unik yang memungkinkan mereka untuk bekerja.

Di Jawa, Anda memberi nama konstruktor setelah kelasnya. Konstruktor adalah sebuah metode, yang didefinisikan dalam kelas yang digunakannya. Konstruktor Java dapat menggunakan overloading untuk memberikan perilaku alternatif. Konstruktor di Java juga dapat menggunakan warisan untuk menggunakan kembali kode.

Mengapa Anda Membutuhkan Konstruktor?

Konstruktor adalah andalan pemrograman berorientasi objek, dan Java tidak terkecuali. Contoh ini menunjukkan bagaimana Anda dapat mendefinisikan kelas Lingkaran dasar dengan satu properti data dan satu metode:

lingkaran kelas publik {
radius ganda publik;
area ganda publik() { kembali 3.14159 * radius * radius; }
}

Anda kemudian dapat membuat instance kelas ini dan berinteraksi dengannya:

Lingkaran c = Lingkaran baru();
c.radius = 2;
System.out.println (c.area()); // 12.56636
instagram viewer

Tapi ini kurang nyaman dan kuat dari yang seharusnya. Ini adalah praktik berorientasi objek yang baik untuk merangkum data, melindunginya dari akses yang tidak sah:

lingkaran kelas publik {
pribadi radius ganda;
area ganda publik() { kembali 3.14159 * radius * radius; }
public void setRadius (double r) { radius = r; }
}

Sekarang kode panggilan dapat menggunakan setRadius metode dan tidak perlu khawatir tentang detail implementasinya:

Lingkaran c = Lingkaran baru();
c.setRadius (2);

Konstruktor menawarkan cara yang lebih baik untuk memasok data ke objek saat Anda membuatnya. Mereka sangat sering digunakan untuk inisialisasi properti, seperti radius sini.

Contoh Konstruktor Sederhana

Konstruktor paling dasar adalah konstruktor tanpa argumen, yang tidak melakukan apa pun:

lingkaran kelas publik {
Lingkaran publik() {}
}

Lihat juga: Pelajari Cara Membuat Kelas di Java

Jika Anda tidak mendefinisikan konstruktor, Java akan menyediakan konstruktor default yang berperilaku dengan cara yang sama.

Perhatikan beberapa hal:

  1. Nama konstruktor cocok dengan nama kelas.
  2. Konstruktor ini menggunakan publik pengubah akses, sehingga kode lain dapat memanggilnya.
  3. Konstruktor tidak menyertakan tipe pengembalian. Tidak seperti metode lain, konstruktor tidak dapat mengembalikan nilai.

Konstruktor biasanya melakukan semacam inisialisasi. Perhatikan bahwa kode di atas tidak menginisialisasi nilai radius. Dalam hal ini, bahasa akan secara otomatis mengaturnya ke nol. Kelas ini mengharapkan pengguna untuk menggunakan setRadius(). Untuk menggunakan default yang lebih berguna daripada 0, Anda dapat menetapkannya di dalam konstruktor:

lingkaran kelas publik {
Lingkaran publik() { radius = 1; }
}

Lingkaran yang dibuat dengan kelas ini setidaknya sekarang memiliki luas yang sebenarnya! Penelepon masih dapat menggunakan setRadius() untuk memberikan radius selain 1. Tetapi konstruktor bisa lebih ramah:

lingkaran kelas publik {
Lingkaran publik (r ganda) { radius = r; }
}

Sekarang Anda dapat membuat lingkaran dengan radius tertentu sejak lahir:

Lingkaran c = Lingkaran baru (2);
System.out.println (c.area()); // 12.56636

Ini adalah penggunaan yang sangat umum untuk konstruktor. Anda akan sering menggunakannya untuk menginisialisasi variabel ke nilai parameter.

Kelebihan Konstruktor

Anda dapat menentukan lebih dari satu konstruktor dalam definisi kelas:

Lingkaran publik() { radius = 1; }
Lingkaran publik (r ganda) { radius = r; }

Ini memberi kode panggilan pilihan tentang cara membuat objek:

Lingkaran c1 = Lingkaran baru (2);
Lingkaran c2 = Lingkaran baru();
System.out.println (c1.area() + ", " + c2.area()); // 12.56636, 3.14159

Dengan Lingkaran yang sedikit lebih kompleks, Anda dapat menjelajahi konstruktor yang lebih menarik. Versi ini menyimpan posisinya:

lingkaran kelas publik {
ganda publik x, y, radius;
Lingkaran publik() { radius = r; }
Lingkaran publik (r ganda) { radius = r; }
Lingkaran publik (x ganda, ganda y, ganda r) {
ini.x = x; ini.y = y; jari-jari = r;
}

area ganda publik() { kembali 3.14159 * radius * radius; }
}

Anda sekarang dapat membuat Lingkaran tanpa argumen, radius tunggal, atau koordinat x dan y di sepanjang radius. Ini adalah jenis kelebihan beban yang sama yang didukung Java untuk metode apa pun.

Rantai Konstruktor

Bagaimana kalau membuat satu Lingkaran, berdasarkan yang lain? Ini akan memberi kita kemampuan untuk menyalin Lingkaran dengan mudah. Perhatikan blok berikut:

Lingkaran publik (Lingkaran c) {
ini.x = c.x;
ini.y = c.y;
this.radius = c.radius;
}

Ini akan berhasil, tetapi mengulangi beberapa kode yang tidak perlu. Karena kelas Circle sudah memiliki konstruktor yang menangani properti individual, Anda dapat memanggilnya dengan menggunakan using ini kata kunci:

Lingkaran publik (Lingkaran c) {
ini (c.x, c.y, c.radius);
}

Ini adalah salah satu bentuk rantai konstruktor, memanggil satu konstruktor dari yang lain. Ini menggunakan lebih sedikit kode dan membantu memusatkan operasi daripada menduplikasinya.

Memanggil Konstruktor Induk

Bentuk lain dari rantai konstruktor terjadi ketika konstruktor memanggil konstruktor dari kelas induknya. Ini bisa eksplisit atau implisit. Untuk memanggil konstruktor induk secara eksplisit, gunakan super kata kunci:

super (x, y);

Bayangkan kelas Bentuk bertindak sebagai induk dari Lingkaran:

Bentuk kelas publik {
ganda x, y;
Bentuk publik (ganda _x, ganda _y) { x = _x; y = _y; }
}

Ini menangani pemosisian umum untuk semua bentuk karena ini adalah fungsi yang mereka semua bagikan. Sekarang kelas Circle dapat mendelegasikan penanganan posisi ke induknya:

lingkaran kelas umum memanjang Bentuk {
radius ganda;
Lingkaran publik (ganda r) { super (0, 0); jari-jari = r; }
Lingkaran publik (x ganda, ganda y, ganda r) {
super (x, y);
jari-jari = r;
}
}

Konstruksi kelas super adalah aspek yang sangat penting dari warisan di jawa. Bahasa memberlakukannya secara default jika Anda tidak secara eksplisit memanggil super di konstruktor Anda.

Akses Pengubah di Konstruktor

Konstruktor dapat menyertakan pengubah akses dalam tanda tangan mereka. Seperti metode lain, ini menentukan tipe pemanggil mana yang dapat mengakses konstruktor:

Tes kelas publik {
private static Test uniqueInstance = new Test();
Tes pribadi() {}
uji statis publik getInstance() {
kembalikan Instance unik;
}
}

Ini adalah contoh yang lebih rumit, jadi berhati-hatilah untuk memahaminya:

  • Kelasnya tidak abstrak, jadi dimungkinkan untuk membuat instance darinya.
  • Konstruktor bersifat pribadi sehingga hanya kelas ini sendiri yang dapat membuat instance baru.
  • Melalui properti dan metode statis, kelas mengekspos satu contoh unik dari dirinya sendiri kepada pemanggil.

Gunakan Konstruktor di Java untuk Membuat Objek

Konstruktor sangat penting untuk pemrograman berorientasi objek. Mereka memungkinkan Anda untuk membuat objek, yang penting!

Di Jawa, konstruktor terlihat seperti metode lain dan bekerja dengan cara yang hampir sama. Anda harus mengingat aturan khusus seputar konstruktor default, kelebihan beban, dan rantai konstruktor. Jika konstruktor baru bagi Anda, Anda mungkin ingin membaca konsep inti Java lainnya yang harus Anda pelajari saat memulai.

Surel
10 Konsep Inti Java Yang Harus Anda Pelajari Saat Memulai

Baik Anda sedang menulis GUI, mengembangkan perangkat lunak sisi server, atau aplikasi seluler menggunakan Android, mempelajari Java akan membantu Anda dengan baik. Berikut adalah beberapa konsep inti Java untuk membantu Anda memulai.

Baca Selanjutnya

Topik-topik yang berkaitan
  • Pemrograman
  • Jawa
  • Kiat Pengkodean
Tentang Penulis
Bobby Jack (51 Artikel Diterbitkan)

Bobby adalah penggemar teknologi yang bekerja sebagai pengembang perangkat lunak selama hampir dua dekade. Dia bersemangat tentang game, bekerja sebagai Editor Ulasan di Majalah Switch Player, dan mendalami semua aspek penerbitan online & pengembangan web.

More From Bobby Jack

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Satu langkah lagi…!

Harap konfirmasi alamat email Anda di email yang baru saja kami kirimkan.

.