ใน 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