Enkapsulasi Java
Enkapsulasi
Arti Encapsulation , adalah untuk memastikan bahwa data "sensitif" disembunyikan dari pengguna. Untuk mencapai ini, Anda harus:
- mendeklarasikan variabel/atribut kelas sebagai
private
- menyediakan metode get
dan set publik untuk mengakses dan memperbarui nilai
private
variabel
Dapatkan dan Tetapkan
Anda belajar dari bab sebelumnya bahwa private
variabel hanya dapat diakses di dalam kelas yang sama (kelas luar tidak memiliki akses ke sana). Namun, dimungkinkan untuk mengaksesnya jika kami menyediakan metode get dan set publik.
Metode get
mengembalikan nilai variabel, dan set
metode menetapkan nilai.
Sintaks untuk keduanya adalah bahwa keduanya dimulai dengan salah satu get
atau set
, diikuti dengan nama variabel, dengan huruf pertama dalam huruf besar:
Contoh
public class Person {
private String name; // private = restricted access
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String newName) {
this.name = newName;
}
}
Contoh dijelaskan
Metode get
mengembalikan nilai variabel name
.
Metode set
mengambil parameter ( newName
) dan menetapkannya ke
name
variabel. Kata this
kunci digunakan untuk merujuk ke objek saat ini.
Namun, karena name
variabel dideklarasikan sebagai private
, kita
tidak dapat mengaksesnya dari luar kelas ini:
Contoh
public class Main {
public static void main(String[] args) {
Person myObj = new Person();
myObj.name = "John"; // error
System.out.println(myObj.name); // error
}
}
Jika variabel dideklarasikan sebagai public
, kita akan mengharapkan output berikut:
John
Namun, saat kami mencoba mengakses private
variabel, kami mendapatkan kesalahan:
MyClass.java:4: error: name has private access in Person
myObj.name = "John";
^
MyClass.java:5: error: name has private access in Person
System.out.println(myObj.name);
^
2 errors
Sebagai gantinya, kami menggunakan metode getName()
and setName()
untuk mengakses dan memperbarui variabel:
Contoh
public class Main {
public static void main(String[] args) {
Person myObj = new Person();
myObj.setName("John"); // Set the value of the name variable to "John"
System.out.println(myObj.getName());
}
}
// Outputs "John"
Mengapa Enkapsulasi?
- Kontrol yang lebih baik dari atribut dan metode kelas
- Atribut kelas dapat dibuat read-only (jika Anda hanya menggunakan
get
metode), atau hanya-tulis (jika Anda hanya menggunakanset
metode) - Fleksibel: programmer dapat mengubah satu bagian dari kode tanpa mempengaruhi bagian lain
- Peningkatan keamanan data