Ada 4 modifier pada enkapsulasi, jelaskan batasan akses keempat modifier tersebut

Assalmualaikum Warahmatullahi Wabarakatuh.

Access Modifier adalah sebuah “hak akses” yang diberikan kepada variabel, method atau class yang bertujuan untuk menjaga integritas dari data ketika ingin diakses oleh object lain. Hak akses tersebut diberikan oleh si pembuat program. Dengan adanya Access Modifier, kita dapat membatasi resource-resource mana saja yang dapat diakses oleh object tertentu, turunannya, ataupun oleh method tertentu.


Ada 4 modifier pada enkapsulasi, jelaskan batasan akses keempat modifier tersebut


Pada bahasa pemrograman java, terdapat 4 jenis modifier yang bisa kalian gunakan untuk variabel, method dan class, berikut ini merupakan tabel yang menjelaskan secara singkat jenis dan tingkat hak akses pada modifier tersebut:

Modifier Class Package Subclass World
No Modifier Y (Dapat Diakses) Y (Dapat Diakses) N (Tidak Dapat Diakses) N (Tidak Dapat Diakses)
public Y (Dapat Diakses) Y (Dapat Diakses) Y (Dapat Diakses) Y (Dapat Diakses)
protected Y (Dapat Diakses) Y (Dapat Diakses) Y (Dapat Diakses) N (Tidak Dapat Diakses)
private Y (Dapat Diakses) N (Tidak Dapat Diakses) N (Tidak Dapat Diakses) N (Tidak Dapat Diakses)
Materi Lainnya Yang Direkomendasikan:
Untuk persiapan, buatlah 2 buah package yang berbeda, didalam masing-masing package tersebut buat sebuah class, seperti pada gambar berikut ini:

Ada 4 modifier pada enkapsulasi, jelaskan batasan akses keempat modifier tersebut


A. No Access Modifier
Sesuai dengan namanya, modifier jenis ini tidak perlu dituliskan pada variable/method/class, jika menggunakan modifier jenis ini, variable/method/class dapat diakses oleh objek atau class lain asalkan didalam satu package yang sama.

Untuk contoh yang pertama, buka class mobil.java pada package Kendaraan. didalam class tersebut akan kita tambahkan sebuah baru bernama mesin, dimana class mobil dapat memanggil class mesin pada package yang sama.

package Kendaraan; class mesin{ double kecepatan; void setKecepatan(double kecepatan){ this.kecepatan = kecepatan; } double getKecepatan(){ return kecepatan; } } public class mobil{ public static void main(String[] args){ //Membuat Objek dari Class Mesin mesin data = new mesin(); data.setKecepatan(360.0); System.out.println("Kecepatan Mobil: "+data.getKecepatan()+" Km/Jam"); } }


Demo:

Ada 4 modifier pada enkapsulasi, jelaskan batasan akses keempat modifier tersebut

Jika class mesin kalian pidahkan pada package lain atau berada diluar package Kendaraan, maka akan terjadi error.

B. Modifier Public

Hak Akses public digunakan pada class/variable/method/konstuktor, agar dapat diakses oleh seluruh class didalam package yang sama atau diluar package yang berbeda, modifier jenis ini memiliki tingkat akses yang sangat luas, hingga seluru sumber daya dapat diakses oleh class manapun tanpa batasan.

Untuk contoh kali ini, kita akan mewariskan sifat-sifat dari class mobil pada class Manusia, kedua class tersebut berada didalam package yang berbdeda, karena menggunakan public, data-data dari class mobil dapat diwariskan pada class Manusia.

Buka class mobil.java pada project kalian, didalam class tersebut kita tidak akan menggunakan method main, lalu masukan beberpa atribut pendukung seperti variable dan method.

package Kendaraan; public class mobil{ public String merek; public double speed; public void setMerek(String merek){ this.merek = merek; } public void setSpeed(int speed){ this.speed = speed; } public String getMerek(){ return merek; } public double getSpeed(){ return speed; } }
Selanjutnya buka class Manusia.java, class tersebut mewarisi sifat-sifat dari class mobil dan akan dijalankan pada method main didalam class Manusia. package Mahluk_Hidup; //Mewarisi Sifat-Sifat dari Class Mobil didalam Package Yang Berbeda public class Manusia extends Kendaraan.mobil{ public static void main(String[] args){ //Membuat Instance/Objek dari Class Manusia Manusia data = new Manusia(); data.setMerek("SUZUKI"); data.setSpeed(280.0); System.out.println("Saya Mempunyai Mobil "+data.getMerek()); System.out.println("Dengan Kecepatan "+data.getSpeed()+" Km/jam"); } }
Demo:

Ada 4 modifier pada enkapsulasi, jelaskan batasan akses keempat modifier tersebut


C. Modifier Protected Variable, Method atau konstruktor yang dideklarasikan protected dapat diakses oleh subclass atau class lain asalkan didalam satu package yang sama, contohnya seperti pada gambar dibawah ini:

Ada 4 modifier pada enkapsulasi, jelaskan batasan akses keempat modifier tersebut

Perlu kalian ketahui hak access protected tidak bisa diterapkan pada class, interface dan juga terhadap variable dan method yang terdapat didalam interface.

Pada class Hewan.java, masukan beberapa atribut berikut ini:

package Mahluk_Hidup; public class Hewan { protected String makanan = "Daging dan Ikan"; protected boolean hidup; protected void setHidup(boolean hidup){ this.hidup = hidup; } protected boolean getHidup(){ return hidup; } }

Selanjitnya buka class Manusia.java, class tersebut mewarisi sifat-sifat dari class Hewan. package Mahluk_Hidup; public class Manusia extends Hewan{ public static void main(String[] args){ Manusia data = new Manusia(); data.setHidup(true); System.out.println("Makanan Saya: "+data.makanan); System.out.println("Saya Hidup: "+data.getHidup()); } }


Demo:

Ada 4 modifier pada enkapsulasi, jelaskan batasan akses keempat modifier tersebut


D. Modifier Private

Variable dan method yang diberikan hak akses private hanya bisa diakses oleh class itu sendiri, data-data tersebut tidak bisa diwariskan pada subclass atau class lainnya.


Agar class lain bisa mengkases variable atau method tersebut maka perlu dibuatkan method yang mempunyai hak akses public (package yang berbeda) atau protected (pada package yang sama). Seperti pada contoh berikut ini:

package WILDAN_TECHNO_ART; class programming{ private String language = "Java"; public String getLanguage(){ return language; } } public class latihan extends programming{ public static void main(String[] args){ latihan data = new latihan(); System.out.println("Bahasa Pemrograman: "+data.getLanguage()); } }

Demo:

Ada 4 modifier pada enkapsulasi, jelaskan batasan akses keempat modifier tersebut

Coba kalian perhatikan program tersebut, untuk mengakses variable language, kita memerlukan sebuah method public yang megembalikan nilai dari variable tersebut, jika kita mengakses variable language secara langsung, maka akan terjadi error, seperti berikut ini: public class latihan extends programming{ public static void main(String[] args){ latihan data = new latihan(); System.out.println("Bahasa Pemrograman: "+data.language); //Error } }

Program tersebut akan terjadi error, karena variable language mempunyai hak akses private, jadi tidak bisa diakses secara langsung. Wassalamualaikum Warahmatullahi Wabarakatuh.

Akses Modifier

Terdapat 4 macam access modifiers di JAVA, yaitu : public, private, protected dan default. 3 tipe akses pertama tertulis secara ekplisit pada kode untuk mengindikasikan tipe akses, sedangkan yang keempat yang merupakan tipe default, tidak diperlukan penulisan keyword atas tipe.

Public

Dapat dilihat pada table diatas bahwa keyword Public dapat diakses didalam class itu sendiri, dapat diakses dengan menggunakan metode extend dan instan pada paket yang sama, serta dapat diakses dengan metode extend maupun instan dalam paket yang berbeda.

Artinya hak akses public dapat diakses oleh sembarang object manapun dan dimanapun posisinya serta dengan apapun caranya. Data maupun method yang bersifat public dapat diakses oleh semua bagian didalam program. Dengan kata lain, data–data maupun method-method yang dideklarasikan dengan tingkat akses public akan dikenali atau dapat diakses oleh semua kelas yang ada didalam, baik yang merupakan kelas turunan maupun kelas yang tidak memiliki hubungan sama sekali. Untuk mendeklarasikan suatu data atau method dengan tingkat akses public, gunakan kata kunci public.

Berikut contoh program sederhana :

Program diatas akan menghasilkan tampilan berikut: nilai a: 2 nilai b: 3 program diatas terdiri dari dua kelas yaitu kelas sekunder yang berisi variabel a, b dan c dengan tingkat akses yang berbeda, dan kelas primer yang berisi objek untuk melakukan instance pada kelas turunan, objek pada kelas primer hanya dapat mengisi nilai pada variabel a dan b karena kedua variabel tersebut memiliki tingkat akses public dan protected, karena variabel c memiliki tingkat akses private maka obyek pada kelas primer tidak bisa mengisi variabel tersebut.

Protected

Suatu data maupun method yang dideklarasikan dengan tingkat akses protected dapat diakses oleh kelas yang memilkinya dan juga oleh kelas– kelas yang masih memiliki oleh hubungan turunan. Sebagai contoh, apabila data x dalam kelas A dideklarasikan sebagai protected, maka kelas B (yang merupakan turunan dari kelas A) diizinkan untuk mengakses data x. Namun apabila terdapat kelas lain, misalnya C (yang bukan merupakan turunan dari kelas A maupun B), tetap tidak dapat mengakses data – data yang dideklarasikan dengan tingkat akses protected. Untuk mendeklarasikan suatu data atau method dengan tingkat akses protected, gunakan kata kunci ptotected.

Dari contoh program protected yang dapat mengakses hanya kelas motor dan kelas turunannya, yaitu Honda

Private

Dengan mendeklarasikan data dan method menggunakan tingkat akses private, maka data dan method tersebut hanya dapat diakses oleh kelas yang memilikinya saja. Ini berarti data dan method tersebut tidak boleh diakses atau digunakan oleh kelas-kelas lain yang terdapat didalam program. Untuk mendeklarasikan suatu data atau method dengan tingkat akses private, gunakan kata kunci private.

Pada contoh diatas, variabel nama dan method getNama() hanya dapat diakses oleh method internal class tersebut.

Default

Untuk hak akses default ini, sebenarnya hanya ditujukan untuk class yang ada dalam satu paket, atau istilahnya hak akses yang berlaku untuk satu folder saja (tidak berlaku untuk class yang tidak satu folder/package).

Pada contoh diatas, variabel nama dan method getNama() hanya dapat diakses oleh method internal class tersebut.

Belajar OOP (Akses Modifier) atau hak akses