Pengubah Akses 'pribadi' Java

1. Ikhtisar

Dalam bahasa pemrograman Java, kolom, konstruktor, metode, dan kelas dapat ditandai dengan pengubah akses. Dalam tutorial ini, kita akan berbicara tentang pengubah akses pribadi di Java.

2. Kata Kunci

The pribadi akses pengubah penting karena memungkinkan enkapsulasi dan informasi bersembunyi, yang merupakan prinsip-prinsip inti dari pemrograman berorientasi objek. Enkapsulasi bertanggung jawab untuk menggabungkan metode dan data, sementara penyembunyian informasi adalah konsekuensi dari enkapsulasi - menyembunyikan representasi internal objek.

Hal pertama yang harus diingat adalah bahwa elemen yang dideklarasikan sebagai private hanya dapat diakses oleh kelas tempat mereka dideklarasikan .

3. Bidang

Sekarang, kita akan melihat beberapa contoh kode sederhana untuk lebih memahami subjeknya.

Pertama, mari buat kelas Karyawan yang berisi beberapa variabel instance pribadi :

public class Employee { private String privateId; private boolean manager; //... }

Dalam contoh ini, kami menandai variabel privateId sebagai privat karena kami ingin menambahkan beberapa logika ke pembuatan id. Dan, seperti yang bisa kita lihat, kami melakukan hal yang sama dengan atribut manager karena kami tidak ingin mengizinkan modifikasi langsung pada bidang ini.

4. Pembangun

Sekarang mari membuat konstruktor pribadi :

private Employee(String id, String name, boolean managerAttribute) { this.name = name; this.privateId = id + "_ID-MANAGER"; }

Dengan menandai konstruktor kita sebagai pribadi , kita hanya dapat menggunakannya dari dalam kelas kita.

Mari tambahkan metode statis yang akan menjadi satu-satunya cara kita menggunakan konstruktor privat ini dari luar kelas Employee :

public static Employee buildManager(String id, String name) { return new Employee(id, name, true); }

Sekarang kita bisa mendapatkan instance manajer dari kelas Karyawan kita hanya dengan menulis:

Employee manager = Employee.buildManager("123MAN","Bob");

Dan di balik layar, tentu saja, metode buildManager memanggil konstruktor pribadi kita .

5. Metode

Sekarang mari tambahkan metode pribadi ke kelas kita:

private void setManager(boolean manager) { this.manager = manager; }

Dan misalkan, karena alasan tertentu, kita memiliki aturan sewenang-wenang di perusahaan kita di mana hanya seorang karyawan bernama "Carl" yang dapat dipromosikan menjadi manajer, meskipun kelas lain tidak mengetahui hal ini. Kami akan membuat metode publik dengan beberapa logika untuk menangani aturan ini yang memanggil metode pribadi kami :

public void elevateToManager() { if ("Carl".equals(this.name)) { setManager(true); } }

6. private in Action

Mari kita lihat contoh bagaimana menggunakan kelas Karyawan kami dari luar:

public class ExampleClass { public static void main(String[] args) { Employee employee = new Employee("Bob","ABC123"); employee.setPrivateId("BCD234"); System.out.println(employee.getPrivateId()); } }

Setelah menjalankan ExampleClass , kita akan melihat outputnya di konsol:

BCD234_ID

Dalam contoh ini, kami menggunakan konstruktor publik dan metode publik changeId (customId) karena kami tidak dapat mengakses variabel privat privateId secara langsung.

Mari kita lihat apa yang terjadi jika kita mencoba mengakses metode privat , konstruktor, atau variabel dari luar kelas Karyawan kita :

public class ExampleClass { public static void main(String[] args) { Employee employee = new Employee("Bob","ABC123",true); employee.setManager(true); employee.privateId = "ABC234"; } }

Kami akan mendapatkan kesalahan kompilasi untuk setiap pernyataan ilegal kami:

The constructor Employee(String, String, boolean) is not visible The method setManager(boolean) from the type Employee is not visible The field Employee.privateId is not visible

7. Kelas

Ada satu kasus khusus di mana kita dapat membuat kelas privat - sebagai kelas dalam dari kelas lain. Jika tidak, jika kami mendeklarasikan kelas luar sebagai privat , kami akan melarang kelas lain mengaksesnya, membuatnya tidak berguna:

public class PublicOuterClass { public PrivateInnerClass getInnerClassInstance() { PrivateInnerClass myPrivateClassInstance = this.new PrivateInnerClass(); myPrivateClassInstance.id = "ID1"; myPrivateClassInstance.name = "Bob"; return myPrivateClassInstance; } private class PrivateInnerClass { public String name; public String id; } }

Dalam contoh ini, kami membuat kelas dalam pribadi di dalam PublicOuterClass kami dengan menentukan pengubah akses pribadi .

Karena kita menggunakan swasta kata kunci, jika kita, untuk beberapa alasan, mencoba untuk instantiate kami PrivateInnerClass dari luar PublicOuterClass , kode tidak akan mengkompilasi dan kita akan melihat kesalahan:

PrivateInnerClass cannot be resolved to a type

8. Kesimpulan

Dalam tutorial singkat ini, kita telah membahas pengubah akses pribadi di Java. Ini cara yang baik untuk mencapai enkapsulasi, yang mengarah pada penyembunyian informasi. Hasilnya, kami dapat memastikan bahwa kami hanya mengekspos data dan perilaku yang kami inginkan ke kelas lain.

Seperti biasa, contoh kode tersedia di GitHub.