ใน Java เป็นไปได้ที่จะกำหนด คลาสภายในคลาสอื่น , คลาสดังกล่าวเรียกว่า คลาสที่ซ้อนกัน . เราสามารถใช้ตัวแก้ไขการเข้าถึงเช่น ส่วนตัว สาธารณะ มีการป้องกันหรือค่าเริ่มต้น สำหรับ ชั้นใน และ ค่าเริ่มต้นหรือสาธารณะ ตัวแก้ไขการเข้าถึงสำหรับ ชั้นนอก .
คลาสที่ซ้อนกันมี 2 ประเภท ถูกกำหนดใน Java
- สแตติกคลาสซ้อน
- คลาสที่ซ้อนกันแบบไม่คงที่
สแตติกคลาสซ้อน
- เราสามารถกำหนดคลาสภายในเป็นแบบสแตติก ดังนั้นประเภทของคลาสดังกล่าวจึงเรียกว่า คลาสที่ซ้อนกันแบบสแตติก
- คลาสที่ซ้อนกัน ถูกกำหนดด้วย คำหลักคงที่ ดังนั้นคลาสที่ซ้อนกันประเภทนี้จึงไม่แบ่งปันความสัมพันธ์ใดๆ กับอินสแตนซ์ของ คลาสภายนอก .
- A คลาสที่ซ้อนกันแบบคงที่ สามารถเข้าถึงสมาชิกคงที่ ของชั้นเรียนของเรา
ตัวอย่าง
class Car { static class Wheel { public void rotate() { System.out.println("The wheel is rotating"); } } } public class Test { public static void main(String args[]) { Car.Wheel wheel = new Car.Wheel(); wheel.rotate(); } }
ผลลัพธ์
The wheel is rotating
คลาสที่ซ้อนกันแบบไม่คงที่
- A คลาสที่ซ้อนกันแบบไม่คงที่ เรียกว่า ชั้นใน ในชวา
- ชั้นใน เกี่ยวข้องกับวัตถุของชั้นนอก . ดังนั้นคลาสชั้นในจึงถูกปฏิบัติเหมือนกับตัวแปรและวิธีการอื่นๆ ของคลาสชั้นนอก
- ชั้นใน มีความเกี่ยวข้องกับอ็อบเจกต์คลาสภายนอกหรืออินสแตนซ์ ดังนั้น เราจึง ประกาศตัวแปรสแตติก . ไม่ได้ ภายในชั้นใน
ตัวอย่าง
public class OuterClassTest { private int a = 10; public void innerClassInstance() { InnerClassTest inner = new InnerClassTest(); inner.outerObject(); } public static void main(String args[]) { OuterClassTest outer = new OuterClassTest(); outer.innerClassInstance(); } class InnerClassTest { public void outerObject() { System.out.println("Outer Value of a is: " + a); } } }
ผลลัพธ์
Outer Value of a is: 10