คลาสที่ประกาศภายในคลาสแต่ภายนอกเมธอดเรียกว่า สมาชิกภายในคลาส .
เราสามารถยกตัวอย่างสมาชิกชั้นในได้สองวิธี
- เรียกใช้ภายในคลาส
- เรียกนอกชั้นเรียน
กฎสำหรับชั้นใน
- ชั้นนอก (คลาสที่มีชั้นใน) สามารถยกตัวอย่างวัตถุของคลาสภายในได้มากเท่าที่ต้องการ ภายในโค้ดของมัน
- หากคลาสชั้นในเป็นคลาสสาธารณะและคลาสที่บรรจุอยู่ด้วย โค้ดในคลาสอื่นที่ไม่เกี่ยวข้องสามารถสร้างอินสแตนซ์ของคลาสภายในได้เช่นกัน
- ไม่มีการสร้างอ็อบเจ็กต์คลาสภายในโดยอัตโนมัติด้วยอ็อบเจ็กต์คลาสภายนอก
- หากคลาสภายในเป็นแบบสแตติก คลาสภายในแบบสแตติกสามารถสร้างอินสแตนซ์ได้โดยไม่ต้องใช้อินสแตนซ์คลาสภายนอก มิฉะนั้น วัตถุคลาสภายในจะต้องเชื่อมโยงกับอินสแตนซ์ของคลาสภายนอก
- ชั้นนอกเรียกได้แม้กระทั่งเมธอดส่วนตัวของชั้นใน
สมาชิกภายในคลาสที่เรียกใช้ภายในคลาส
ในตัวอย่างด้านล่าง เรากำลังเรียกใช้เมธอดของสมาชิกภายในคลาสจากเมธอด display() ของ OuterClass
ตัวอย่าง
public class OuterClass {
private int value = 20;
class InnerClass {
void show() {
System.out.println("Value is: " + value);
}
}
void display() {
InnerClass ic = new InnerClass();
ic.show();
}
public static void main(String args[]){
OuterClass oc = new OuterClass();
oc.display();
}
} Value is: 20
สมาชิกภายในคลาสที่เรียกใช้นอกคลาส
ในตัวอย่างด้านล่าง เรากำลังเรียกใช้เมธอด show() ของ InnerClass จากภายนอก OuterClass เช่น คลาสทดสอบ
ตัวอย่าง
class OuterClass {
private int value = 20;
class InnerClass {
void show() {
System.out.println("Value is: "+ value);
}
}
}
public class Test {
public static void main(String args[]) {
OuterClass obj = new OuterClass();
OuterClass.InnerClass in = obj.new InnerClass();
in.show();
}
} ผลลัพธ์
Value is: 20