คลาสที่ประกาศภายในคลาสแต่ภายนอกเมธอดเรียกว่า สมาชิกภายในคลาส .
เราสามารถยกตัวอย่างสมาชิกชั้นในได้สองวิธี
- เรียกใช้ภายในคลาส
- เรียกนอกชั้นเรียน
กฎสำหรับชั้นใน
- ชั้นนอก (คลาสที่มีชั้นใน) สามารถยกตัวอย่างวัตถุของคลาสภายในได้มากเท่าที่ต้องการ ภายในโค้ดของมัน
- หากคลาสชั้นในเป็นคลาสสาธารณะและคลาสที่บรรจุอยู่ด้วย โค้ดในคลาสอื่นที่ไม่เกี่ยวข้องสามารถสร้างอินสแตนซ์ของคลาสภายในได้เช่นกัน
- ไม่มีการสร้างอ็อบเจ็กต์คลาสภายในโดยอัตโนมัติด้วยอ็อบเจ็กต์คลาสภายนอก
- หากคลาสภายในเป็นแบบสแตติก คลาสภายในแบบสแตติกสามารถสร้างอินสแตนซ์ได้โดยไม่ต้องใช้อินสแตนซ์คลาสภายนอก มิฉะนั้น วัตถุคลาสภายในจะต้องเชื่อมโยงกับอินสแตนซ์ของคลาสภายนอก
- ชั้นนอกเรียกได้แม้กระทั่งเมธอดส่วนตัวของชั้นใน
สมาชิกภายในคลาสที่เรียกใช้ภายในคลาส
ในตัวอย่างด้านล่าง เรากำลังเรียกใช้เมธอดของสมาชิกภายในคลาสจากเมธอด 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