Enkapsulasi Java


Enkapsulasi

Arti Encapsulation , adalah untuk memastikan bahwa data "sensitif" disembunyikan dari pengguna. Untuk mencapai ini, Anda harus:

  • mendeklarasikan variabel/atribut kelas sebagaiprivate
  • menyediakan metode get dan set publik untuk mengakses dan memperbarui nilai private variabel

Dapatkan dan Tetapkan

Anda belajar dari bab sebelumnya bahwa privatevariabel 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 getmengembalikan nilai variabel, dan setmetode menetapkan nilai.

Sintaks untuk keduanya adalah bahwa keduanya dimulai dengan salah satu getatau 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 getmengembalikan nilai variabel name.

Metode setmengambil parameter ( newName) dan menetapkannya ke namevariabel. Kata thiskunci digunakan untuk merujuk ke objek saat ini.

Namun, karena namevariabel 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 privatevariabel, 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 getmetode), atau hanya-tulis (jika Anda hanya menggunakan setmetode)
  • Fleksibel: programmer dapat mengubah satu bagian dari kode tanpa mempengaruhi bagian lain
  • Peningkatan keamanan data