[ HTML ] [ Java ] [ Bahasa C ]


Kamis, April 18, 2019

Acces Modifier pada Java

Sesuai dengan namanya access modifier, fungsi dari access modifier pada Java tersebut adalah membatasi scope dari sebuah class, constructor, variabel, method, atau anggota data. Ada empat tipe dari access modifier yang tersedia pada Java:

satu, Default - Tidak ada persyaratan keyword
dua, Private
tiga, Protected
empat, Public

lebih lengkap seperti diperlihatkan tabel pada gambar 1 berikut ini.


tabel access modifier pada bahasa pemrograman Java
Gambar 1 tabel access modifier
sumber : geeksforgeeks.org

satu, Default: Ketika tidak ada access modifier yang spesifik untuk class, method, atau anggota data, maka secara otomatis access modifier bertipe default access modifier secara otomatis.

Anggota data, class, atau method yang tidak dideklarasikan menggunakan access modifier apapun maka secara otomatis menjadi tipe default access modifier yang diakses hanya dengan package yang sama.

Pada contoh berikut ini akan diciptakan package dan class dalam package yang akan memiliki default access modifier dan akan dicoba untuk mengakses class dari satu package sebuah class dari package kedua.

// Program Java

// mengilustrasikan default

// modifier.

package p1

 

// Class Peek memiliki default

// access modifier.

class Peek 

void display() 

{System.out.println("Hello"

+" World!");} 

 

// Program Java

// mengilustrasikan error

// ketika menggunakan class

// dari package yang berbeda

// dengan default modifier.

package p2

import p1.*

 

// Class ini memiliki default

// access modifier.

class PeekNew 

 

public static void main(String args[]

// Mengakses class Peek dari

// package p1.

Peeks obj = new Peek(); 

obj.display(); 

}

 

}

Output:
Compile time error

dua, Private: private access modifier adalah penggunaan spesifik dari keyword private. Method atau data member yang dideklarasikan sebagai private diakses hanya menggunakan class yang dideklarasikan didalamnya. Class lainnya dari package yang sama tidak akan bisa mengakses anggota member tersebut. Top loevel class atau interface tidak bisa dideklarasikan sebagai tipe private karena private berarti "hanya terlihat oleh class tertutup". Protected juga berarti "hanya terlihat oleh class tertutup dan subclass-nya".

Karenanya modifier dengan istilah dari aplikasi ke class hanya diterapkan untuk nested class dan tidak untuk top level class.

Pada contoh berikut ini, akan diciptakan class A dan B dengan package yang sama yaitu p1. Selanjutnya akan dideklarasikan method dalam class A sebagai private dan dilakukan percobaan untuk mengakses method tersebut dari class B dan kemudian akan dilihat hasilnya sebagai berikut.

// Program Java

// mengilustrasikan error

// ketika menggunakan class

// dari package yang berbeda

// dengan private modifier.

package p1

 

class

private void display() 

{System.out.println("Makan"

+"TidurMakan");} 

 

class

public static void main(String args[]

{A obj = new A(); 

// Mencoba untuk mengakses

// method private dari class

// lainnya. 

obj.display();} 

}

Output:
error: display() has private access in A
obj.display();

tiga, Protected: protected access modifier adalah penggunaan spesifik dari keyword protected. Method atau data member dideklarasikan sebagai protected yang diakses menggunakan nama package yang sama atau sub class pada package yang berbeda.

Pada contoh berikut akan diciptakan dua package p1 dan p2. Class A dalam p1 akan bertipe public, yang akan diakses melalui p2. Method memperlihatkan pada class A adalah protected dan class B adalah turunan (inheritance) dari class A dan method protected akan diakses dari penciptaan sebuah objek dari class B.

// Program Java

// mengilustrasikan protected

// modifier.

package p1

 

/* Class A */ 

public class

protected void display() 

{System.out.println("Makan"

+"TidurMakan");} 

 

 

// Program Java

// mengilustrasikan protected

// modifier.

package p2;

// mengimpor semua class pada

// package p1. 

import p1.*

 

// Class B adalah subclass

// dari Class A.

class B extends

public static void main(String args[]

{B obj = new B(); 

obj.display();} 

}

Output:
MakanTidurMakan

empat, public: public access modifier adalah penggunaan spesifik dari keyword public. Public access modifier memiliki scope luas diantara semua access modifier lainnya. Class, method, atau data member yang dideklarasikan sebagai tipe public dapat diakses dari manapun pada program. Tidak ada batasan dalam scope dari public data member.

// Program Java

// mengilustrasikan public

// modifier.

package p1

 

public class

public void display() 

{System.out.println("Makan"

+"TidurMakan");} 

}

 

package p2

import p1.*;

 

class

public static void main(String args[]

{A obj = new A

obj.display();} 

}

Output:
MakanTidurMakan

Poin Penting:
satu, Jika programmer menggunakan class yang telah diciptakan sebelumnya, cobalah untuk menggunakan level access terbatas yang akan masuk untuk anggota tertentu. Gunakankah tipe private pada program kecuali memiliki alasan lain dari tidak menggunakan tipe private.
dua, Hindari penggunaan tipe public kecuali untuk konstanta (constants).

Tidak ada komentar:

Posting Komentar

Respon komentar 7 x 24 jam, so please be patient :D