Di Jawa, variabel pribadi terlihat oleh seluruh kelas. Mereka dapat diakses dari metode statis dan dari instance lain dari kelas yang sama.
Ini, misalnya, berguna dalam metode pabrik . Metode pabrik biasanya melakukan inisialisasi ke objek yang sangat kompleks sehingga Anda tidak ingin membiarkannya pada kode aplikasi. Untuk melakukan inisialisasi, metode pabrik seringkali memerlukan akses ke internal kelas yang tidak ingin Anda tampilkan. Mampu mengakses variabel pribadi secara langsung membuat hidup Anda jauh lebih mudah.
Namun, ketika Anda ingin menyembunyikan detail implementasi kelas bahkan dari metode statis atau dari contoh lain dari kelas itu, Anda bisa mengikuti pola data kelas privat . Masukkan semua variabel pribadi dari suatu kelas ke dalam kelas dalam pribadi dan delegasikan setiap getter atau setter ke getter dan setter dari kelas dalam itu.
Pilihan lain adalah mendefinisikan antarmuka untuk kelas yang mendeklarasikan semua metode publik kelas dan kemudian hanya merujuk kelas di bawah antarmuka itu jika memungkinkan. Referensi ke tipe antarmuka tidak dapat digunakan untuk secara langsung mengakses apa pun yang tidak dideklarasikan di antarmuka, di mana pun (kecuali dengan refleksi, tentu saja). Ketika Anda menggunakan bahasa pemrograman berorientasi objek yang tidak memiliki antarmuka (seperti C ++, misalnya), mereka dapat disimulasikan dengan kelas dasar abstrak yang diwarisi oleh kelas aktual.
interface ITest {
public int getA();
}
class Test implements ITest {
private int a = 5;
public int getA() { return a; } // implementation of method declared in interface
public static void main(){
ITest t = new Test();
t.a = 1; // syntax error: Interface ITest has no "a"
System.out.println(t.getA()); // calls Test.getA, visible because ITest declares it
}
}
equals
bahwa harus memeriksa bidang pribadi dari contoh lain. (Posting sebagai komentar, karena ini singkat, dan tidak ada tentang OOP-ness dari pendekatan ini)