Perbedaan Public, Private, dan Protected dalam OOP
Dalam OOP terdapat tiga prinsip utama yaitu Encapsulation (enkapsulasi) atau yang dikenal juga sebagai information hiding. Kita bisa menentukan aksesibilitas apakah suatu method atau variabel dari suatu kelas bisa diakses atau dimodifikasi oleh kelas lain.
Umumnya OOP punya tiga modifier yang mengatur aksesibilitas dari method dan variabel, yaitu private, protected, dan public. Nah, dari namanya udah ketauan kan mana yang paling rahasia?
Modifier public
Public artinya kelas, method, maupun variabel yang memiliki modifier ini bisa diakses oleh semua class, baik yang ada di package itu maupun yang bukan. Modifier ini juga memberikan akses kepada objek yang diinstans (dibentuk) di kelas tersebut.
Modifier private
Private artinya kelas, method, ataupun variabel yang memiliki modifier ini cuma bisa diakses oleh kelas itu sendiri. Kelas lain, maupun objek yang dibentuk oleh kelas lain sama sekali tidak punya akses method, kelas, maupun variabel dengan modifier private.
Nah, sifat tertutup total dari private ini tidak memandang apakah si kelas lain yang ingin memanggil method, kelas, atau variabel ini dari package yang sama atau bukan, tetep tidak diberikan akses. Karena sifatnya inilah, maka method/var private tidak bisa diwariskan ke subkelas.
Diantara method dan variabel yang paling sering dideklarasiin sebagai private adalah variabel. Kenapa? Karena :
1. Biasanya masing-masing kelas itu punya variabel sendiri-sendiri jadi ga perlu memanggil variable dari kelas lain.
2. Melindungi supaya variabel tertentu dari kemungkinan berubah nilainya jika diakses oleh method dari kelas yang berbeda.
Modifier protected
Sama halnya seperti private, protected juga membatasi akses terhadap method/variabel/kelas, namun tidak bersifat total. Modifier ini biasanya digunakan untuk membatasi akses terhadap:
Umumnya OOP punya tiga modifier yang mengatur aksesibilitas dari method dan variabel, yaitu private, protected, dan public. Nah, dari namanya udah ketauan kan mana yang paling rahasia?
Public artinya kelas, method, maupun variabel yang memiliki modifier ini bisa diakses oleh semua class, baik yang ada di package itu maupun yang bukan. Modifier ini juga memberikan akses kepada objek yang diinstans (dibentuk) di kelas tersebut.
Modifier private
Private artinya kelas, method, ataupun variabel yang memiliki modifier ini cuma bisa diakses oleh kelas itu sendiri. Kelas lain, maupun objek yang dibentuk oleh kelas lain sama sekali tidak punya akses method, kelas, maupun variabel dengan modifier private.
Nah, sifat tertutup total dari private ini tidak memandang apakah si kelas lain yang ingin memanggil method, kelas, atau variabel ini dari package yang sama atau bukan, tetep tidak diberikan akses. Karena sifatnya inilah, maka method/var private tidak bisa diwariskan ke subkelas.
Diantara method dan variabel yang paling sering dideklarasiin sebagai private adalah variabel. Kenapa? Karena :
1. Biasanya masing-masing kelas itu punya variabel sendiri-sendiri jadi ga perlu memanggil variable dari kelas lain.
2. Melindungi supaya variabel tertentu dari kemungkinan berubah nilainya jika diakses oleh method dari kelas yang berbeda.
BACA JUGA : "Masih Bingung Membedakan For, Foreach dan teman-temannya? Yuk Kenalan!"
Modifier protected
Sama halnya seperti private, protected juga membatasi akses terhadap method/variabel/kelas, namun tidak bersifat total. Modifier ini biasanya digunakan untuk membatasi akses terhadap:
- Subkelas dari suatu kelas
- Kelas lain dari package yang sama
Berikut tabel ringkasan aksesibilitas dari masing-masing modifier
Aksesibilitas
|
public
|
private
|
protected
|
Dari kelas yang sama
|
Ya
|
Ya
|
Ya
|
Dari kelas yang berada dalam package yang sama
|
Ya
|
Tidak
|
Ya
|
Dari kelas di luar package
|
Ya
|
Tidak
|
Tidak
|
Dari subkelas dalam package yang sama
|
Ya
|
Tidak
|
Ya
|
Dari subkelas di luar package
|
Ya
|
Tidak
|
Ya
|
Kalau aku sih yang paling sering aku pake adalah private sama public. Kalo pake private biasanya buat menjaga nilai suatu var biar ga berubah kalo diakses method dari kelas lain.
Gimana? Udah mulai paham belom? :D Kalau ada pertanyaan, kritik, atau saran, silahkan tulis di kolom komentar. Semoga tulisan ini bermanfaat, dan terakhir, terima kasih :D
Terima Kasih :D
BalasHapusmantul
BalasHapusThank You Gan :D
HapusKalo bisa kasih contoh coding nya gan,saya kalo teori suka susah untuk dipahami.. tapi lumayan ngerti.. thx gan :)
BalasHapusKalo contoh bisa langsung di googling aja gan udah banyak, saya disini emang sengaja teori doang buat catetan sendiri juga :D
Hapus