☕️Java 내부 클래스, 익명 클래스

hamsang·2022년 7월 18일
0

Java

목록 보기
36/36
post-thumbnail

✏️ 내부 클래스

내부 클래스는 클래스 내에 선언된 클래스다. 두 클래스가 서로 긴밀한 관계에 있을 때 내부 클래스를 사용한다.

class Outer {     // 외부 클래스

    ...

    class Inner { // 내부 클래스

        ...

    }

    ...

}

📍 장점

  • 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
  • 외부에서 내부 클래스에 접근할 수 없으므로 코드의 복잡성을 줄인다.

📍 내부 클래스의 종류

내부 클래스는 필드와 마찬가지로 선언된 위치에 따라 다음과 같이 구분됩니다.

  1. 정적 클래스(static class)
  2. 인스턴스 클래스(instance class)
  3. 지역 클래스(local class)
  4. 익명 클래스(anonymous class)
  • 정적 클래스(static class)는 주로 외부 클래스(outer class)의 클래스 메소드에 사용될 목적으로 선언됩니다.

  • 외부 클래스 영역에 선언된 클래스 중에서 static 키워드를 가지지 않는 클래스를 인스턴스 클래스(instance class)라고 합니다.
    이러한 인스턴스 클래스는 주로 외부 클래스(outer class)의 인스턴스 변수나 인스턴스 메소드에 사용될 목적으로 선언됩니다.

  • 지역 클래스(local class)란 외부 클래스의 메소드나 초기화 블록에 선언된 클래스를 의미합니다.
    이러한 지역 클래스는 선언된 블록 내에서만 사용할 수 있습니다.


📍 내부 클래스의 제어자와 접근성

  • 내부 클래스의 제어자는 변수에 사용 가능한 제어자와 동일
    (일반 클래스는 제어자로 default와 public만 되는 반면 내부 클래스는 전체 제어자 사용 가능)

✏️ 익명 클래스

  • 프로그램에서 일시적으로 한번만 사용되고 버려지는 클래스
  • 재사용성이 없고, 확장성을 활용하는 것이 유지보수에서 더 불리할 때 사용
  • 익명 클래스는 클래스의 선언과 동시에 객체를 생성하므로, 단 하나의 객체만을 생성하는 일회용 클래스입니다.
// 익명 클래스는 선언과 동시에 생성하여 참조변수에 대입함.
클래스이름 참조변수이름 = new 클래스이름(){
    // 메소드의 선언
};
profile
햄생

0개의 댓글

관련 채용 정보