{"id":482,"date":"2020-04-08T03:46:28","date_gmt":"2020-04-08T03:46:28","guid":{"rendered":"https:\/\/unydevelopernetwork.com\/?p=482"},"modified":"2020-04-08T03:46:28","modified_gmt":"2020-04-08T03:46:28","slug":"tutorial-private-protected-dan-public-java","status":"publish","type":"post","link":"https:\/\/unydevelopernetwork.com\/index.php\/2020\/04\/08\/tutorial-private-protected-dan-public-java\/","title":{"rendered":"Tutorial: Private, Protected, dan Public? (Java)"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>\n<p>Selamat datang di blogs UNYDeveloperNetwork. Sebagai programmer java, Anda pasti sering menemui kata &#8211; kata &#8220;public&#8221;, &#8220;private&#8221;, dan &#8220;protected&#8221;. Sebenarnya, apakah itu? dan mengapa digunakan di Java? Kapankah kita menggunakan salah satu dari ketiganya? mari simak artikel ini sampai selesai.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Baik, sebelum melangkah lebih jauh lagi. Apa itu &#8220;public&#8221;, &#8220;private&#8221;, dan &#8220;protected&#8221; ? Ketiga istilah tersebut disebut sebagai <em>access modifier<\/em>. Fungsi <em>access modifier <\/em>adalah membatasi akses sebuah <em>class<\/em>, konstruktor, data, dan method ke <em>class <\/em>lain. Kemudian, apa fungsi dari masing &#8211; masing <em>access modifier <\/em>tersebut? dan bagaimana cara penggunaanya?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><em>Private<\/em><\/h2>\n\n\n\n<p>Sesuai dengan namanya, <em>private<\/em> atau <em>pribadi<\/em>. Artinya hanya bisa diakses oleh pemiliknya. Sehingga, sesuatu yang diberikan <em>access modifier<\/em> <em>private<\/em> hanya dapat diakses oleh <em>class <\/em>nya sendiri. Ada beberapa ketentuan khusus tentang penggunaan <em>access modifier <\/em>ini yakni:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Data dan method <em>private <\/em>hanya bisa diakses di dalam <em>class<\/em> yang memilikinya<\/li><li><em>Class<\/em> dan <em>Interface<\/em> tidak dapat dideklarasikan sebagai <em>private<\/em><\/li><li>Jika sebuah <em>class<\/em> memiliki konstruktor <em>private<\/em> maka kita tidak dapat membuat <em>object<\/em> dari <em>class<\/em> tersebut di luar <em>class <\/em>tersebut<em>.<\/em><\/li><\/ul>\n\n\n\n<p>Penggambaran untuk <em>access modifier<\/em> <em>private <\/em>adalah sebagai berikut.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"741\" height=\"311\" src=\"https:\/\/i1.wp.com\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-40.png?fit=640%2C269&amp;ssl=1\" alt=\"\" class=\"wp-image-484\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-40.png 741w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-40-300x126.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-40-700x294.png 700w\" sizes=\"auto, (max-width: 741px) 100vw, 741px\" \/><figcaption>Penggambaran <em>access modifier private<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p>Dari penggambaran di atas, dapat kita lihat bahwa secara mudahnya apabila sebuah <em>class<\/em> memiliki <em>private variable<\/em> dan <em>private method <\/em> maka tidak dapat diakses dari <em>class <\/em>lain. Kemudian bagaimanakah implementasinya? mari kita perhatikan kodingan berikut ini.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"777\" height=\"211\" src=\"https:\/\/i0.wp.com\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-43.png?fit=640%2C174&amp;ssl=1\" alt=\"\" class=\"wp-image-487\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-43.png 777w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-43-300x81.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-43-700x190.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-43-768x209.png 768w\" sizes=\"auto, (max-width: 777px) 100vw, 777px\" \/><\/figure>\n\n\n\n<p>Dapat kita lihat pada kodingan di atas, bahwa <em>private variable<\/em> pada <em>class<\/em> AClass dapat diakses oleh <em>method<\/em> yang ada di dalam <em>class <\/em>tersebut. Sedangkan method <em>methodAClass<\/em> sama sekali tidak dapat diakses dari <em>BClass<\/em> karena <em>methodAClass<\/em> memiliki <em>access modifier private<\/em>. Sehingga pada IDE memunculkan <em>error<\/em>: <em>The method methodAClass() from the type AClass is not visible<\/em>. Jadi itulah fungsi <em>access modifier private<\/em>, yakni membuat apapun yang diberikan <em>access modifier private<\/em> menjadi <em>not visible<\/em> sehingga tidak dapat diakses di luar <em>class<\/em> yang memilikinya.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><em>Protected<\/em><\/h2>\n\n\n\n<p>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. <em>Access Modifier Protected<\/em> 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<em> package<\/em>) para penumpangnya akan mendapatkan layanan yang sama. <\/p>\n\n\n\n<p>Begitu pula dengan<em> access modifier protected<\/em>. Apapun yang diberikan <em>access modifier protected<\/em> dapat diakses oleh kelas &#8211; kelas apapun asal dalam satu <em>package<\/em>. Mari kita perhatikan penggambarannya.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1198\" height=\"204\" src=\"https:\/\/i0.wp.com\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-45.png?fit=640%2C109&amp;ssl=1\" alt=\"\" class=\"wp-image-489\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-45.png 1198w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-45-300x51.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-45-700x119.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-45-768x131.png 768w\" sizes=\"auto, (max-width: 1198px) 100vw, 1198px\" \/><\/figure>\n\n\n\n<p>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 &#8211; 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 <em>access modifier protected<\/em> dapat diakses oleh seluruh <em>class<\/em> dan <em>object<\/em> yang berada di satu <em>package <\/em>yang sama. Kemudian bagaimanakah implementasinya? Mari kita perhatikan kodingan berikut.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1170\" height=\"491\" src=\"https:\/\/i1.wp.com\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-47.png?fit=640%2C269&amp;ssl=1\" alt=\"\" class=\"wp-image-491\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-47.png 1170w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-47-300x126.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-47-700x294.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-47-768x322.png 768w\" sizes=\"auto, (max-width: 1170px) 100vw, 1170px\" \/><\/figure>\n\n\n\n<p>Mari kita perhatikan kodingan di atas. Pada kodingan di atas Saya menggunakan dua <em>package<\/em> yakni <em>sourceone <\/em>dan <em>sourcetwo<\/em>. Pada <em>package<\/em> <em>sourceone<\/em>, saya membuat <em>class CClass<\/em> yang di dalamnya terdapat <em>protected variable<\/em> dan <em>protected method<\/em>. Dapat kita lihat pada kodingan di atas, <em>subclass<\/em> <em>inCClass<\/em> masih dapat mengakses <em>method<\/em> yang <em>protected<\/em> itu tadi. dan <em>class DClass<\/em> juga masih dapat mengakses <em>method<\/em> yang <em>protected<\/em> tersebut. Hal ini dikarenakan <em>subclass inCClass <\/em>dan <em>class<\/em> <em>DClass <\/em>masih terdapat dalam satu <em>package<\/em> yakni <em>package<\/em> <em>sourceone<\/em>. Sedangkan, mari kita lihat ke <em>ZClass<\/em>,<em> ZClass <\/em>tidak dapat mengakses <em>method<\/em> <em>protected<\/em> yang terdapat pada <em>class CClass<\/em> karena sudah berbeda <em>package <\/em>(<em>package sourcetwo<\/em>). IDE pun mengeluarkan error <em>the method methodCClass from the type CClass is not visible<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><em>Public<\/em><\/h2>\n\n\n\n<p>Melihat dari judulnya, ya publik. Artinya memang publik alias dapat diakses oleh siapa saja. Entah itu dari <em>package<\/em> yang berbeda, semua dapat mengaksesnya. Bahkan, ketika sesuatu diberikan <em>access modifier public<\/em>, yang tadinya <em>private<\/em> pun menjadi <em>public<\/em>. Bingung? Mari kita perhatikan kodingan berikut ini.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1028\" height=\"411\" src=\"https:\/\/i0.wp.com\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-48.png?fit=640%2C256&amp;ssl=1\" alt=\"\" class=\"wp-image-492\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-48.png 1028w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-48-300x120.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-48-700x280.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-48-768x307.png 768w\" sizes=\"auto, (max-width: 1028px) 100vw, 1028px\" \/><\/figure>\n\n\n\n<p>Mari kita perhatikan kodingan di atas. Pada <em>class YClass<\/em> pada <em>package<\/em> <em>sourcetwo<\/em> memiliki sebuah <em>private variable<\/em>. Namun, memiliki sebuah method <em>public<\/em> yang dapat mengembalikan nilai dari <em>private variable tersebut<\/em>. Karena <em>method tersebut bersifat public<\/em> maka dapat diakses oleh siapa saja, contohnya <em>class XClass<\/em> dan <em>EClass<\/em> yang berasal dari <em>package sourceone<\/em>. Jadi, hati &#8211; hatilah menggunakan <em>access modifier public<\/em> karena dapat mematikan <em>access modifier<\/em> lainnya (contoh <em>private <\/em>dan <em>protected<\/em>)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><em>Default<\/em><\/h2>\n\n\n\n<p>Selain kita mengenal <em>private, protected<\/em>, dan <em>public<\/em> kita juga mengenal satu <em>access modifier <\/em>lagi yakni <em>Default<\/em>. Apabila sesuatu tidak diberikan <em>access modifier<\/em> apa &#8211; apa, maka <em>access modifier<\/em> yang ada pada sesuatu tersebut adalah <em>default<\/em>. Ketika sesuatu itu memiliki <em>access modifier default<\/em>, maka Ia hanya bisa diakses oleh <em>class<\/em> lain dalam <em>package <\/em>yang sama. Untuk lebih jelasnya, perhatikan kodingan berikut ini.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1356\" height=\"349\" src=\"https:\/\/i0.wp.com\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-49.png?fit=640%2C165&amp;ssl=1\" alt=\"\" class=\"wp-image-493\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-49.png 1356w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-49-300x77.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-49-700x180.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-49-768x198.png 768w\" sizes=\"auto, (max-width: 1356px) 100vw, 1356px\" \/><\/figure><\/div>\n\n\n\n<p>Ya, hampir sama dengan <em>protected<\/em>, ketika sesuatu yang memiliki <em>access modifier default<\/em> (perhatikan method <em>methodWClass<\/em>) maka Ia hanya bisa diakses oleh <em>class &#8211; class<\/em> yang terdapat dalam satu <em>package<\/em> saja. Ketika akan diakses oleh <em>class<\/em> yang berada di luar <em>package<\/em>, maka secara <em>default<\/em> akan memunculkan <em>error<\/em> method yang dipanggil <em>not visible<\/em> (perhatikan <em>class FClass<\/em>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ringkasan<\/h2>\n\n\n\n<p>Dari apa yang sudah kita bahas di atas, berikut ini adalah ringkasannya.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>Class<\/em><br>(Satu <em>Package)<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>Class<\/em><br>(Berbeda <em>Package<\/em>)<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>Package<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>SubClass<\/em><br>(Satu <em>Package)<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>SubClass<\/em><br>(Berbeda<em> Package)<\/em><\/td><\/tr><tr><td><em>private<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><\/tr><tr><td><em>protected<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><tr><td><em>public<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><tr><td><em>default<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>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&#8230; ^_^<\/p>\n\n\n\n<p><strong>UNDUH PROJECT<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/github.com\/milstrike\/UNYDeveloperNetwork\/tree\/master\/AccessModifier\">https:\/\/github.com\/milstrike\/UNYDeveloperNetwork\/tree\/master\/AccessModifier<\/a><\/li><\/ul>\n\n\n\n<p><strong>REFERENSI<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/medium.com\/@TomHenricksen\/java-access-for-control-private-public-and-protected-55b77d53927\">https:\/\/medium.com\/@TomHenricksen\/java-access-for-control-private-public-and-protected-55b77d53927<\/a><\/li><li><a href=\"https:\/\/beginnersbook.com\/2013\/05\/java-access-modifiers\/\">https:\/\/beginnersbook.com\/2013\/05\/java-access-modifiers\/<\/a><\/li><li><a href=\"https:\/\/www.geeksforgeeks.org\/what-is-the-difference-between-public-private-and-protected-in-php\/\">https:\/\/www.geeksforgeeks.org\/what-is-the-difference-between-public-private-and-protected-in-php\/<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Selamat datang di blogs UNYDeveloperNetwork. Sebagai programmer java, Anda pasti sering menemui kata &#8211; kata &#8220;public&#8221;, &#8220;private&#8221;, dan &#8220;protected&#8221;. Sebenarnya, apakah itu? dan mengapa digunakan di Java? Kapankah kita menggunakan salah satu&#8230;<\/p>\n","protected":false},"author":1,"featured_media":484,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[3,2],"tags":[148,147,146,99,142,5,149,143,144,145],"class_list":["post-482","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","category-tutorial","tag-access","tag-access-modifier","tag-default","tag-eclipse","tag-github","tag-java","tag-modifier","tag-private","tag-protected","tag-public"],"featured_image_src":"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-40.png","author_info":{"display_name":"Muhammad Irfan Luthfi","author_link":"https:\/\/unydevelopernetwork.com\/index.php\/author\/admin\/"},"jetpack_featured_media_url":"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2020\/04\/image-40.png","jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/posts\/482","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/comments?post=482"}],"version-history":[{"count":2,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/posts\/482\/revisions"}],"predecessor-version":[{"id":494,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/posts\/482\/revisions\/494"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/media\/484"}],"wp:attachment":[{"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/media?parent=482"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/categories?post=482"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/tags?post=482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}