내부 클래스(Inner Class)

JH·2024년 2월 15일

java

목록 보기
9/21

내부 클래스(Inner Class)

내부 클래스는 클래스 내부에서 선언된 클래스를 의미한다. 일반적으로 외부 클래스의 멤버 변수나 메서드에 쉽게 접근하고자 할 때 사용된다. 내부 클래스는 외부 클래스의 멤버에 쉽게 접근할 수 있으며, 외부에서는 직접적으로 내부 클래스에 접근할 수 없다.

내부 클래스 특징

  • 외부 클래스의 멤버에 쉽게 접근할 수 있다.
  • 외부에서는 직접적으로 내부 클래스에 접근할 수 없으며, 반드시 외부 클래스를 통해 내부 클래스를 생성해야 한다.

내부 클래스 종류

  • 인스턴스 클래스(Instance Class): 외부 클래스의 인스턴스가 생성될 때 만들어지며, 인스턴스 멤버와 관련된 작업에 사용된다.
  • 정적 클래스(Static Class): 외부 클래스의 정적 멤버와 관련된 작업에 사용한다. 내부 정적 클래스는 외부 클래스의 인스턴스와 독립적으로 생성될 수 있다.
  • 지역 클래스(Local Class): 메서드 내부에서 선언되어 해당 메서드 내부에서만 사용된다.
  • 익명 클래스(Anonymous Class): 이름을 가지지 않는 클래스로, 선언과 동시에 객체를 생성한다. 주로 일회성으로 사용되며, 주로 인터페이스나 추상 클래스의 구현체를 만들 때 사용된다.

내부 클래스 예시

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 클래스에서는 먼저 외부 클래스의 인스턴스를 생성한 후, 외부 클래스의 인스턴스를 사용하여 내부 클래스의 인스턴스를 생성한다. 그리고 내부 클래스의 메서드를 호출하여 외부 클래스의 멤버 변수와 내부 클래스의 멤버 변수를 출력한다. 이를 통해 내부 클래스에서는 외부 클래스의 멤버 변수에 쉽게 접근할 수 있음을 확인할 수 있다.

profile
발전하는 백엔드 개발자

0개의 댓글