Terkadang, menggunakan kelas yang hanya berisi metode statis dan field statis bisa sangat berguna.
Sebagai contoh, kita dapat menggunakan kelas utilitas seperti java.lang.Math, java.util.Arrays yang berisi kumpulan metode untuk operasi matematika atau yang berkaitan dengan array. Atau, kita juga bisa mengumpulkan metode statis pabrik (static factory method) pada java.util.Collections yang digunakan untuk membuat objek yang mengimplementasikan antarmuka tertentu.
Kelas utilitas ini dapat digunakan tanpa memerlukan variabel atau metode instance, sehingga konstruktor tidak diperlukan. Namun, jika konstruktor tidak didefinisikan secara eksplisit, compiler akan secara otomatis membuat konstruktor default public. Akibatnya, pengguna tidak dapat membedakan apakah konstruktor tersebut dibuat secara otomatis atau tidak.
Untuk mencegah hal ini, terkadang kelas dibuat menjadi kelas abstrak. Namun, kelas abstrak tidak dapat mencegah proses pembuatan instance. Karena, kita masih bisa membuat subkelas dan membuat instance dari subkelas tersebut.
Oleh karena itu, untuk mencegah pembuatan instance pada kelas utilitas, kita perlu membuat modifier akses konstruktor menjadi private.
Dengan membuat modifier akses konstruktor default menjadi private seperti di atas, kelas tersebut tidak dapat diakses dari luar kelas. Selain itu, jika konstruktor default dipanggil dari dalam kelas, akan terjadi pengecualian (exception).
Penggunaan konstruktor private mungkin menyulitkan pemahaman pengguna tentang konstruktor tersebut, sehingga pemberian komentar (comment) juga diperlukan. Sebagai catatan, dengan membuat konstruktor menjadi private, pewarisan (inheritance) juga tidak dapat dilakukan.
Komentar0