Selamat datang di blogs UNYDeveloperNetwork. Sebagai programmer java, Anda pasti sering menemui kata – kata “public”, “private”, dan “protected”. Sebenarnya, apakah itu? dan mengapa digunakan di Java? Kapankah kita menggunakan salah satu dari ketiganya? mari simak artikel ini sampai selesai.
Baik, sebelum melangkah lebih jauh lagi. Apa itu “public”, “private”, dan “protected” ? Ketiga istilah tersebut disebut sebagai access modifier. Fungsi access modifier adalah membatasi akses sebuah class, konstruktor, data, dan method ke class lain. Kemudian, apa fungsi dari masing – masing access modifier tersebut? dan bagaimana cara penggunaanya?
Private
Sesuai dengan namanya, private atau pribadi. Artinya hanya bisa diakses oleh pemiliknya. Sehingga, sesuatu yang diberikan access modifier private hanya dapat diakses oleh class nya sendiri. Ada beberapa ketentuan khusus tentang penggunaan access modifier ini yakni:
- Data dan method private hanya bisa diakses di dalam class yang memilikinya
- Class dan Interface tidak dapat dideklarasikan sebagai private
- Jika sebuah class memiliki konstruktor private maka kita tidak dapat membuat object dari class tersebut di luar class tersebut.
Penggambaran untuk access modifier private adalah sebagai berikut.
Dari penggambaran di atas, dapat kita lihat bahwa secara mudahnya apabila sebuah class memiliki private variable dan private method maka tidak dapat diakses dari class lain. Kemudian bagaimanakah implementasinya? mari kita perhatikan kodingan berikut ini.
Dapat kita lihat pada kodingan di atas, bahwa private variable pada class AClass dapat diakses oleh method yang ada di dalam class tersebut. Sedangkan method methodAClass sama sekali tidak dapat diakses dari BClass karena methodAClass memiliki access modifier private. Sehingga pada IDE memunculkan error: The method methodAClass() from the type AClass is not visible. Jadi itulah fungsi access modifier private, yakni membuat apapun yang diberikan access modifier private menjadi not visible sehingga tidak dapat diakses di luar class yang memilikinya.
Protected
Pernahkah Anda naik kereta api? Seringkali dalam satu rangkaian kereta api terdiri dari beberapa kelas. Misalnya kereta api A. memiliki 10 kereta dan memiliki 3 konfigurasi kelas yakni Eksekutif, Bisnis, dan Ekonomi. Kelas Eksekutif memiliki 2 kereta, kelas Bisnis memiliki 4 kereta, dan kelas ekonomi memiliki 4 kereta. Access Modifier Protected digambarkan seperti halnya pembagian kelas dalam rangkaian kereta tersebut. Antara 1 gerbong dengan gerbong yang lain pasti berbeda, namun jika masih dalam 1 kelas (dalam hal ini package) para penumpangnya akan mendapatkan layanan yang sama.
Begitu pula dengan access modifier protected. Apapun yang diberikan access modifier protected dapat diakses oleh kelas – kelas apapun asal dalam satu package. Mari kita perhatikan penggambarannya.
Mari kita lihat penggambaran di atas, seperti yang sudah dibahas sebelumnya, ibarat kereta api yang memiliki banyak kereta dan memiliki beberapa konfigurasi kelas. Ibaratkan seluruh gerbong dengan kelas ekonomi masuk dalam paket ekonomi, dan seluruh gerbong dengan kelas bisnis masuk dalam paket ekonomi. Karena dalam satu paket, maka penumpang masing – masing kelas mendapatkan pelayanan yang sama (kelas ekonomi mendapatkan pelayanan paket ekonomi, kelas bisnis mendapatkan pelayanan paket bisnis). Begitu pula di dalam Java, sekali lagi, segala sesuatu yang diberikan access modifier protected dapat diakses oleh seluruh class dan object yang berada di satu package yang sama. Kemudian bagaimanakah implementasinya? Mari kita perhatikan kodingan berikut.
Mari kita perhatikan kodingan di atas. Pada kodingan di atas Saya menggunakan dua package yakni sourceone dan sourcetwo. Pada package sourceone, saya membuat class CClass yang di dalamnya terdapat protected variable dan protected method. Dapat kita lihat pada kodingan di atas, subclass inCClass masih dapat mengakses method yang protected itu tadi. dan class DClass juga masih dapat mengakses method yang protected tersebut. Hal ini dikarenakan subclass inCClass dan class DClass masih terdapat dalam satu package yakni package sourceone. Sedangkan, mari kita lihat ke ZClass, ZClass tidak dapat mengakses method protected yang terdapat pada class CClass karena sudah berbeda package (package sourcetwo). IDE pun mengeluarkan error the method methodCClass from the type CClass is not visible.
Public
Melihat dari judulnya, ya publik. Artinya memang publik alias dapat diakses oleh siapa saja. Entah itu dari package yang berbeda, semua dapat mengaksesnya. Bahkan, ketika sesuatu diberikan access modifier public, yang tadinya private pun menjadi public. Bingung? Mari kita perhatikan kodingan berikut ini.
Mari kita perhatikan kodingan di atas. Pada class YClass pada package sourcetwo memiliki sebuah private variable. Namun, memiliki sebuah method public yang dapat mengembalikan nilai dari private variable tersebut. Karena method tersebut bersifat public maka dapat diakses oleh siapa saja, contohnya class XClass dan EClass yang berasal dari package sourceone. Jadi, hati – hatilah menggunakan access modifier public karena dapat mematikan access modifier lainnya (contoh private dan protected)
Default
Selain kita mengenal private, protected, dan public kita juga mengenal satu access modifier lagi yakni Default. Apabila sesuatu tidak diberikan access modifier apa – apa, maka access modifier yang ada pada sesuatu tersebut adalah default. Ketika sesuatu itu memiliki access modifier default, maka Ia hanya bisa diakses oleh class lain dalam package yang sama. Untuk lebih jelasnya, perhatikan kodingan berikut ini.
Ya, hampir sama dengan protected, ketika sesuatu yang memiliki access modifier default (perhatikan method methodWClass) maka Ia hanya bisa diakses oleh class – class yang terdapat dalam satu package saja. Ketika akan diakses oleh class yang berada di luar package, maka secara default akan memunculkan error method yang dipanggil not visible (perhatikan class FClass).
Ringkasan
Dari apa yang sudah kita bahas di atas, berikut ini adalah ringkasannya.
Class (Satu Package) | Class (Berbeda Package) | Package | SubClass (Satu Package) | SubClass (Berbeda Package) | |
private | Yes | No | No | No | No |
protected | Yes | No | Yes | Yes | Yes |
public | Yes | Yes | Yes | Yes | Yes |
default | Yes | No | Yes | No | No |
Demikianlah artikel Tutorial: Private, Protected, dan Public? (Java) kali ini. Semoga bermanfaat. Apabila Anda memiliki pertanyaan, silakan tinggalkan pertanyaan Anda melalui kolom komentar. Apabila Anda ingin mencuplik artikel ini, jangan lupa sertakan juga URL nya. Terima Kasih… ^_^
UNDUH PROJECT
REFERENSI
- https://medium.com/@TomHenricksen/java-access-for-control-private-public-and-protected-55b77d53927
- https://beginnersbook.com/2013/05/java-access-modifiers/
- https://www.geeksforgeeks.org/what-is-the-difference-between-public-private-and-protected-in-php/
Tulisannya sangat membantu dan memperjelas pemahaman bagi yang masih awam. Teruslah berbagi ilmu, semoga menjadi ladang amal yang terus menuai pahala kebaikan.