내부 클래스는 클래스 내부에서 선언된 클래스를 의미한다. 일반적으로 외부 클래스의 멤버 변수나 메서드에 쉽게 접근하고자 할 때 사용된다. 내부 클래스는 외부 클래스의 멤버에 쉽게 접근할 수 있으며, 외부에서는 직접적으로 내부 클래스에 접근할 수 없다.
class Outer {
private int outerField = 10;
// 내부 클래스 정의
class Inner {
private int innerField = 20;
// 내부 클래스 메서드
public void display() {
System.out.println("Outer Field: " + outerField);
System.out.println("Inner Field: " + innerField);
}
}
}
public class Main {
public static void main(String[] args) {
// 외부 클래스의 인스턴스 생성
Outer outer = new Outer();
// 내부 클래스의 인스턴스 생성
Outer.Inner inner = outer.new Inner();
// 내부 클래스의 메서드 호출
inner.display();
}
}
위 예시에서는 외부 클래스 Outer와 내부 클래스 Inner를 정의하고, 내부 클래스에서 외부 클래스의 멤버 변수에 접근하는 예시를 보여준다. 외부 클래스 Outer는 outerField라는 멤버 변수를 가지고 있고, 내부 클래스 Inner는 innerField라는 멤버 변수를 가지고 있다. Inner 클래스의 display() 메서드에서는 외부 클래스와 내부 클래스의 멤버 변수를 출력한다.
Main 클래스에서는 먼저 외부 클래스의 인스턴스를 생성한 후, 외부 클래스의 인스턴스를 사용하여 내부 클래스의 인스턴스를 생성한다. 그리고 내부 클래스의 메서드를 호출하여 외부 클래스의 멤버 변수와 내부 클래스의 멤버 변수를 출력한다. 이를 통해 내부 클래스에서는 외부 클래스의 멤버 변수에 쉽게 접근할 수 있음을 확인할 수 있다.