Bagaimana Menerapkan Private Constructor di Java



Artikel ini akan memberi Anda pengetahuan terperinci dan komprehensif tentang Private Constructor di Java dan penggunaannya dengan contoh.

Konstruktor digunakan untuk menginisialisasi status objek. Mirip dengan metode, konstruktor juga dapat menyimpan kumpulan pernyataan, yang dapat disebut hanya instruksi. Pada artikel ini, kita akan membahas Private Constructor di dengan urutan sebagai berikut:

Pengantar Konstruktor di Java

Konstruktor dijalankan pada saat pembuatan objek. Untuk mendapatkan pemahaman yang lebih baik tentang konstruktor dan aplikasinya, anggap saja kotak sebagai kelas. Kelas Kotak diasumsikan memiliki beberapa variabel kelas (yaitu panjang, lebar, dan tinggi). Namun, pada saat membuat objeknya (yaitu, Kotak ada di memori komputer), begitu juga kotak bisa ada tanpa nilai yang ditentukan untuk besaran dimensinya.





Jelas tidak.

Oleh karena itu, konstruktor diperkenalkan untuk menetapkan nilai ke variabel kelas pada pembuatan objek. Ini dapat dilakukan secara eksplisit oleh programmer atau oleh Java itu sendiri. Ketika dilakukan oleh Java itu sendiri, itu disebut sebagai konstruktor default.



Sangat penting untuk memahami bahwa setiap metode, yang memiliki penentu akses yang disediakan oleh pembuat kode ke konstruktor, yang dibuat pribadi, hanya dapat diakses di dalam kelas itu sendiri.

Private Constructor di Java

Kelas Singleton

Dari namanya itu sendiri, kita bisa memanggil sebuah kelas sebagai singleton jika ia membatasi jumlah objek dari kelas itu menjadi satu. Kelas tidak dapat memiliki lebih dari satu objek dalam kasus seperti itu. Kelas tunggal digunakan secara menyeluruh dalam konsep seperti jaringan dan konektivitas database. Kelas Singleton adalah a kelas privat .



Harus ada cara lain untuk mengekstrak instance kelas dan metode pengembalian untuk mengambil kembali hasilnya. Di bawah ini adalah ilustrasi yang tepat untuk hal yang sama. Piktograf pertama menggambarkan kemungkinan hasil di mana nilai 'a.x' setara dengan 20 dan nilai 'b.x' menghasilkan 20 juga. Dalam kode, saat kita mendefinisikan kelas privat tunggal, konstruktornya tidak dapat diakses di luar kelas.

Nilai a.x = 20

Nilai b.x = 20

// Program Java untuk mendemonstrasikan implementasi pola Singleton // menggunakan konstruktor privat. import java.io. * class MySingleton {static MySingleton instance = null public int x = 10 // private constructor tidak dapat diakses di luar kelas private MySingleton () {} // Metode pabrik untuk menyediakan pengguna dengan instance static public MySingleton getInstance () {if (instance == null) instance = new MySingleton () return instance}} // Kelas Driver Utama {public static void main (String args []) {MySingleton a = MySingleton.getInstance () MySingleton b = MySingleton.getInstance () ax = ax + 10 System.out.println ('Nilai ax =' + ax) System.out.println ('Nilai bx =' + bx)}}

Dampak Private Constructor di Java

Konstruktor pribadi tidak dapat mengakses kelas turunan dari kelas lain. Jadi, kita harus memberikan fungsi publik, yang memanggil konstruktor privat. Dalam kasus ini, objek tidak diinisialisasi, atau kita harus mengirim kembali sebuah instance ke objek tersebut jika sudah diinisialisasi. Ini sangat berguna untuk objek yang tidak dapat diinisialisasi. Konstruktor pribadi digunakan dalam kasus berikut:

  • Masing-masing kelas, yang hanya memiliki metode dan anggota statis.
  • Kelas khusus, yang hanya banyak menggunakan anggota akhir statis (konstanta).
  • Untuk memasukkan lajang.
  • Untuk memasukkan metode pabrik.

Untuk memanfaatkan pencacahan, yang tipe-aman.

Rangkaian Konstruktor Internal

Rangkaian konstruktor internal adalah ketika konstruktor memanggil konstruktor lain dari kelas yang sama, maka ia dapat disebut sebagai rangkaian konstruktor. Ini adalah tugas kita untuk menggunakan kata kunci ini untuk memanggil konstruktor kelas lainnya. Dalam beberapa contoh, ini digunakan untuk menentukan beberapa nilai default dari variabel kelas. Harap juga diingat bahwa panggilan konstruktor lain harus menjadi pernyataan pertama dalam blok kode.

Selain itu, tidak boleh ada panggilan rekursif, yang akan membuat loop tak terbatas. Sekarang mari kita lihat contoh rangkaian konstruktor dalam program java.

paket com.journaldev.constructor public class Karyawan {private int id private String name public Employee () {this ('John Doe', 999) System.out.println ('Default Employee Created')} public Employee (int i) { this ('John Doe', i) System.out.println ('Employee Created with Default Name')} public Employee (String s, int i) {this.id = i this.name = s System.out.println ( 'Dibuat Karyawan')} public static void main (String [] args) {Employee emp = new Employee () System.out.println (emp) Employee emp1 = new Employee (10) System.out.println (emp1) Employee emp2 = Karyawan baru ('Pankaj', 20) System.out.println (emp2)} @Override public String toString () {return 'ID =' + id + ', Name =' + name} public int getId () {return id } public void setId (int id) {this.id = id} public String getName () {return name} public void setName (String name) {this.name = name}}

Pola Desain Kelas Singleton

  • Anggota Tingkat Kelas (Metode Inisialisasi Eager):

  1. Pertama, buat instance statis private konstan dari kelas singleton.

  2. Kemudian, tulis metode statis, yang mengembalikan objek kelas tunggal, yang kita buat sebagai turunan anggota kelas.

  3. Dimungkinkan untuk menandai anggota statis sebagai publik untuk mengakses instance statis konstan secara langsung.

  4. Kelas singleton bervariasi dari kelas Java normal dalam hal Instansiasi. Dalam kelas normal, konstruktor digunakan tetapi untuk kelas tunggal kita menggunakan metode get Instance ().

  • Anggota Tingkat Kelas (Metode Inisialisasi Malas):

  1. Pertama, mulai konstruktor sebagai pribadi.

  2. Kemudian buat instance statis pribadi dari kelas tunggal ini. Ingatlah untuk TIDAK memberi contoh.

  3. Kemudian, tulis metode statis, yang memeriksa anggota instance statis untuk null dan memulai instance tersebut. Akhirnya, ia mengembalikan sebuah objek kelas singleton.

  • Anggota Tingkat Kelas (Inisialisasi Malas dengan Metode Kunci Ganda):

Pertimbangkan dua utas yang berjalan di mana keduanya masuk ke dalam pernyataan 'jika' secara bersamaan saat instance adalah nol. Di mana, satu utas masuk ke blok yang disinkronkan untuk membuat instance, sementara utas lainnya diblokir. Karena utas pertama berada di blok yang disinkronkan, utas dalam antrian membuat objek tunggal lain. Harap perhatikan bahwa saat utas kedua memasuki blok tersinkronisasi, itu gagal untuk memeriksa apakah instance tersebut bukan nol.

  • Menggunakan kelas Inner bersarang (metode Lazy Load):

Di sini, ini didasarkan pada Spesifikasi Bahasa Java (JLS). Mesin Virtual Java memuat anggota data statis hanya berdasarkan permintaan. Jadi, kelas Singleton dimuat pertama kali oleh JVM. Oleh karena itu, tidak ada anggota data statis di kelas

Pemegang Kelas Singleton tidak memuat SINGLE_INSTANCE. Ketika kita memanggil metode getIntance, hanya ini yang terjadi. JLS menjamin eksekusi inisialisasi kelas. Ketentuan untuk sinkronisasi eksplisit pada metode getInstance () statis untuk pemuatan dan inisialisasi. Saat inisialisasi membuat variabel statis SINGLE_INSTANCE secara berurutan, semua pemanggilan getInstance () secara bersamaan akan kembali sama tanpa overhead sinkronisasi.

  • Dengan menggunakan Enums

Tidak semua pendekatan di atas merupakan solusi lengkap dalam semua kasus. Beberapa contoh implementasi di atas dapat dibuat dengan menggunakan refleksi. Dalam kedua skenario, kita dapat melewati konstruktor privat dan membuat banyak contoh. Oleh karena itu, pendekatan baru adalah membuat kelas tunggal dengan menggunakan enum. Karena kolom enum adalah konstanta waktu yang dikompilasi, mereka adalah instance dari tipe enumnya. Mereka dibangun ketika tipe enum direferensikan untuk pertama kalinya.

Dengan ini, kita sampai pada bagian akhir artikel Konstruktor Pribadi di Java. Saya harap Anda memahami Private Constructors dan bagaimana mereka dapat digunakan di Java.

apa itu java bufferedreader

Lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus pelatihan dan sertifikasi Java J2EE dan SOA Edureka dirancang untuk siswa dan profesional yang ingin menjadi Pengembang Java. Kursus ini dirancang untuk memberi Anda permulaan dalam pemrograman Java dan melatih Anda untuk konsep Java inti dan lanjutan bersama dengan berbagai kerangka kerja Java seperti Hibernate & Spring.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar di blog 'Tutorial Java' ini dan kami akan menghubungi Anda kembali secepatnya.