Encapsulation
Encapsulation/Enkapsulasi berarti memastikan data sensitif di dalam suatu class dan object disembunyikan dari user yang tidak diinginkan. Untuk mencapai ini, Anda harus :
- Mendeklarasikan atribut/variabel sebagai private
- Menyediakan method publik get dan set untuk mengakses dan memperbarui nilai dari variabel private
Get dan Set
Anda telah mempelajari pada tutorial sebelumnya bahwa variabel private hanya dapat diakses di dalam class yang sama (class di luar itu tidak memiliki akses). Namun, masih memungkinkan untuk diakses jika kita menyediakan method publik get dan set.
Method get mengembalikan nilai variabel dan method set untuk menetapkan nilainya.
Cara penulisan untuk keduanya adalah dimulai dengan get atau set, diikuti dengan nama variabel, dengan huruf awal kapital. Contoh :
public class Orang {
private String nama; // private = akses terbatas
// Getter
public String getNama() {
return nama;
}
public void setNama(String namaBaru) {
this.nama = namaBaru;
}
}
Penjelasan Contoh
Method get mengembalikan nilai dari variabel nama. Method set menerima sebuah parameter (namaBaru) dan menetapkannya pada variabel nama. Keyword ini digunakan untuk merujuk ke object saat ini. Namun, karena variabel nama dideklarasikan sebagai private, kita tidak dapat mengaksesnya dari luar class. Contoh :
public class Main {
public static void main(String[] args) {
Orang objectSaya = new Orang();
objectSaya.nama = "John"; // error
System.out.println(objectSaya.nama); // error
}
}
public class Orang {
private String nama ;
// Getter
public String getNama() {
return nama;
}
// Setter
public void setNama(String namaBaru) {
this.nama = namaBaru;
}
}
Jika variabel dideklarasikan sebagai public, kita bisa mengharapkan output seperti berikut :
John
Namun, karena kita mencoba untuk mengakses sebuah variabel private, kita mendapatkan error :
MyClass.java:4: error: nama has private access in Orang
objectSaya.nama = "John";
^
MyClass.java:5: error: nama has private access in Orang
System.out.println(objectSaya.nama);
^
2 errors
Sebagai gantinya, kita mengunakan method getNama() dan setNama() untuk mengakses dan mengupdate variabel. Contoh :
public class Main {
public static void main(String[] args) {
Orang objectSaya = new Orang();
objectSaya.setNama("John"); // Menetapkan nilai dari variabel nama, yaitu "John"
System.out.println(objectSaya.getNama()); // hasilnya "John"
}
}
public class Orang {
private String nama;
// Getter
public String getNama() {
return nama;
}
// Setter
public void setNama(String namaBaru) {
this.nama = namaBaru;
}
}
Output :
John
Mengapa Memakai Encapsulation?
- Kontrol yang lebih baik untuk atribut dan method class
- Atribut class dapat dibuat read-only (jika Anda hanya menggunakan method get), atau write-only (jika Anda hanya menggunakan method set)
- Fleksibel karena programmer dapat mengubah satu bagian dari kode tanpa mempengaruhi bagian lainnya
- Meningkatkan keamanan data
Tutorial sebelumnya : Modifier Pada Java
Tutorial setelahnya : Java Packages / API
Semua Tutorial JAVA : Tutorial JAVA