개발일지/Java

Java 내부 클래스 (Inner class)

E-room 2022. 9. 9. 23:06
728x90

클래스 내에 선언된 클래스

 

외부 클래스와 내부 클래스가 서로 연관되어 있을 때 사용한다.

장점

  1. 내부 클래스를 사용하면 외부 클래스의 멤버들에 쉽게 접근할 수 있다
  2. 코드가 간결해진다
  3. 외부적으로 불필요한 데이터를 감출 수 있어 캡슐화에 유용

 

내부 클래스의 종류

class Outer { // 외부 클래스

    class Inner {
        // 인스턴스 내부 클래스
    }
    
    static class StaticInner {
        // 정적 내부 클래스
    }
    
    void run() {
        class LocalInner {
        // 지역 내부 클래스
        }
    }
}

 

종류 선언 위치 사용 가능한 변수
인스턴스 내부 클래스(instance inner class) 외부 클래스의 멤버변수 선언위치에 선언(멤버 내부 클래스) 외부 인스턴스 변수, 외부 전역 변수
정적 내부 클래스(static inner class) 외부 클래스의 멤버변수 선언위치에 선언(멤버 내부 클래스) 외부 전역 변수
지역 내부 클래스(local inner class) 외부 클래스의 메서드나 초기화블럭 안에 선언 외부 인스턴스 변수, 외부 전역 변수
익명 내부 클래스(anonymous inner class) 클래스의 선언과 객체의 생성을 동시에 하는 일회용 익명 클래스 외부 인스턴스 변수, 외부 전역 변수

 

728x90