ใน Java ตัวแปรส่วนตัวสามารถมองเห็นได้ทั้งชั้นเรียน พวกเขาสามารถเข้าถึงได้จากวิธีการคงที่และจากอินสแตนซ์อื่น ๆ ของชั้นเดียวกัน
นี่คือตัวอย่างเช่นประโยชน์ในวิธีการโรงงาน โดยปกติแล้ววิธีการจากโรงงานจะเริ่มต้นไปยังวัตถุที่ซับซ้อนจนคุณไม่ต้องการทิ้งมันไว้ในรหัสแอปพลิเคชัน ในการเริ่มต้นวิธีการจากโรงงานมักต้องการการเข้าถึงคลาสภายในที่คุณไม่ต้องการเปิดเผย ความสามารถในการเข้าถึงตัวแปรส่วนตัวโดยตรงทำให้ชีวิตของคุณง่ายขึ้นมาก
แต่เมื่อคุณต้องการที่จะซ่อนรายละเอียดการดำเนินงานของการเรียนแม้จะมาจากวิธีการแบบคงที่หรือจากกรณีอื่น ๆ ของชั้นที่คุณสามารถทำตามรูปแบบข้อมูลระดับส่วนตัว วางตัวแปรส่วนตัวทั้งหมดของคลาสลงในคลาสส่วนตัวภายในแล้วมอบหมายตัวแทน getters หรือ setters ใด ๆ ให้แก่ getters และ setters ของคลาสภายในนั้น
อีกทางเลือกหนึ่งคือการกำหนดอินเทอร์เฟซสำหรับคลาสซึ่งประกาศวิธีสาธารณะทั้งหมดของคลาสและจากนั้นอ้างอิงคลาสภายใต้อินเทอร์เฟซนั้นเท่าที่จะทำได้ การอ้างอิงถึงอินเตอร์เฟสชนิดไม่สามารถใช้เพื่อเข้าถึงสิ่งใด ๆ ที่ไม่ได้ประกาศในอินเทอร์เฟซโดยตรงไม่ว่าที่ไหน (ยกเว้นด้วยการสะท้อนกลับแน่นอน) เมื่อคุณใช้ภาษาการเขียนโปรแกรมเชิงวัตถุซึ่งไม่มีส่วนต่อประสาน (เช่น C ++ เป็นต้น) พวกเขาสามารถจำลองด้วยคลาสฐานนามธรรมซึ่งสืบทอดมาจากคลาสจริง
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
ต้องตรวจสอบช่องส่วนตัวของอินสแตนซ์อื่น (โพสต์แสดงความคิดเห็นเป็นเช่นนี้เป็นระยะสั้นและไม่มีอะไรเกี่ยวกับ OOP-Ness ของวิธีการนี้)