자바에서는 다른 클래스 안에 클래스를 정의할 수 있습니다. , 이러한 클래스를 중첩 클래스라고 합니다. . 비공개, 공개, 보호 또는 기본값 과 같은 액세스 수정자를 사용할 수 있습니다. 내부 클래스용 및 기본 또는 공개 외부 클래스에 대한 액세스 수정자 .
중첩 클래스에는 두 가지 유형이 있습니다. 자바로 정의되어 있습니다.
- 정적 중첩 클래스
- 비정적 중첩 클래스
정적 중첩 클래스
- 내부 클래스를 정적으로 정의할 수 있으므로 이러한 유형의 클래스를 정적 중첩 클래스라고 합니다.
- 중첩 클래스 정적 키워드로 정의됨 , 따라서 이러한 유형의 중첩 클래스는 외부 클래스의 인스턴스와 어떠한 관계도 공유하지 않습니다. .
- 정적 중첩 클래스 정적 구성원에 액세스할 수 있음 우리 반의.
예시
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
비정적 중첩 클래스
- 비정적 중첩 클래스 간접적으로 내부 클래스로 알려져 있습니다. 자바로.
- 내부 클래스 외부 클래스의 개체와 연결됩니다. . 따라서 내부 클래스는 외부 클래스의 다른 변수 및 메서드처럼 취급됩니다.
- 내부 클래스 외부 클래스 개체 또는 인스턴스와 연결되어 있으므로 정적 변수를 선언할 수 없습니다. 내부 클래스 내부.
예시
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