본문 바로가기
STUDY

[Java] Nested Class - 중첩클래스

by simongs 2020. 5. 11.

▣ 중첩클래스란 (Nested Class)

다른 클래스 내부에 정의되는 클래스를 중첩클래스라고 한다.

▣ 중첩클래스 종류

  • 1. 스태틱 클래스(Static Class) : 독립적으로 오브젝트로 만들어질 수 있음
  • 2. 내부 클래스(Inner Class) : 자신이 정의된 클래스의 오브젝트 안에서만 만들어질 수 있음
    • 2-1. 멤버 내부 클래스 (Member Inner Class) : 멤버필드처럼 오브젝트 레벨에 정의됨
    • 2-2. 로컬 클래스 (Local Class) : 메소드 레벨에 정의됨
    • 2-3. 익명 내부 클래스 (Anonymous Inner Class) : 이름을 가지지 않음

▣ Sample Code

// Outer Class
class OuterClass {

    // 중첩클래스 Style 1) Static Class
    static class StaticNestedClass {

    }

    // 중첩클래스 Style 2-1) Member Inner Class
    class MemberInnerClass {

    }

    void method(SomeObject someObject) {
        // 선언된 메소드 내에서만 사용가능함. 자신이 선언된 곳의 정보에 접근이 가능하다.
        // 중첩클래스 Style 2-2) Local Class
        class LocalClass implements InterfaceAAA {
            public String implement() {
                return someObject.getTest();
            }
        }
        InterfaceAAA test = new LocalClass();
    }

    void anonyMethod(SomeObject someObject) {
        // 중첩클래스 Style 2-3) Anonymous Inner Class
        InterfaceAAA test = new InterfaceAAA() {
            public String implement() {
                return someObject.getTest();
            }
        }
    }
}

// 익명클래스를 위한 인터페이스 정의
interface InterfaceAAA {
    String implements();
}

▣ 부가정보 > 익명내부클래스

클래스 선언과 오브젝트 생성이 결합된 형태로 만들어지며,
상속할 클래스나 구현할 인터페이스를 생성자 대신 사용해서 다음과 같은 형태로 만들어 사용한다.
클래스를 재사용할 필요가 없고, 구현한 인터페이스 타입으로만 사용할 경우에 유용하다.

 

댓글