내부 클래스 요약
- 인스턴스 내부 클래스 / 정적 내부 클래스 / 지역 내부 클래스는 멤버변수와 같은 위치에 만들어짐
종류 | 구현 위치 | 사용할 수 있는 외부 클래스 변수 | 생성 방법 |
인스턴스 내부 클래스 | 외부 클래스 멤버 변수와 동일 | 외부 인스턴스 변수 외부 전역 변수 |
외부 클래스를 먼저 만든 후 내부 클래스 생성 |
정적 내부 클래스 | 외부 클래스 멤버 변수와 동일 | 외부 전역 변수 | 외부 클래스와 무관하게 생성 |
지역 내부 클래스 | 메서드 내부에 구현 | 외부 인스턴스 변수 외부 전역 변수 |
메서드를 호출할 때 생성 |
익명 내부 클래스 | 메서드 내부에 구현 변수에 대입하여 직접 구현 |
외부 인스턴스 변수 외부 전역 변수 |
메서드를 호출할 때 생성 되거나, 인터페이스 타입 변수에 대입할 때 new 예약어를 사용하여 생성 |
인스턴스 내부 클래스
- 기본적으로 내부클래스는 private로 접근 불가능하게 막아놓는다.
정적 내부 클래스
- Outclass의 생성 없이 내부 정적 클래스 내 변수 / 메소드 접근 가능
- 내부 정적 클래스 내에 있는 정적 메소드는 바로 호출 가능
지역 내부 클래스
- getRunnable 메소드의 지역변수는 메소드 호출이 끝나면 메모리가 사라지기 때문에 오류
- 외부 메서드의 지역변수는 상수로 처리
- 참조할 수는 있지만 변경은 불가능 하다.
익명 내부 클래스 (가장 많이 씀)
- 메서드를 호출할 때 생성 되거나
- 인터페이스 타입 변수에 대입할 때 new 예약어를 사용하여 생성
- 단 하나의 인터페이스나, 단 하나의 추상클래스만 구현 가능