내부 클래스(Inner Class)란?
- 클래스 내부에 선언한 클래스로 이 클래스를 감싸고 있는 외부 클래스와 밀접한 연관이 있는 경우가 많고, 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 내부 클래스로 선언해서 사용함
- 중첩 클래스라고도 함
- 종류: 인스턴스 내부 클래스, 정적(static) 내부 클래스, 지역(local) 내부 클래스, 익명(anonymous) 내부 클래스
인스턴스 내부 클래스
- 내부적으로 사용할 클래스를 선언 (private으로 사용하는 것을 권장)
- 외부 클래스가 생성된 후 생성됨 (정적 내부 클래스와 다름)
- private이 아닌 내부 클래스는 다른 외부 클래스에서 생성할 수 있음
내부 클래스 InClass를 사용하기 위해선 먼저 외부 클래스 OutClass가 생성되어야 하는데, static 변수는 클래스의 생성과 상관없이 사용할 수 있어야 한다는 것에서 모순이 생긴다. 따라서 인스턴스 내부 클래스 안에 static 변수를 선언할 수 없다.
정적 내부 클래스
- 외부 클래스 생성과 무관하게 사용할 수 있음
- 정적 변수, 정적 메서드 사용
정적(static) 내부 클래스는 외부 클래스의 인스턴스 변수는 사용하지 못하고 스태틱 변수는 사용 가능하다. 그리고 정적 내부 클래스 안에서 선언된 인스턴스 변수는 static 메서드가 아닌 경우에만 사용 가능하다.
'Java' 카테고리의 다른 글
자바 정렬 인터페이스, Comparable과 Comparator (1) | 2021.05.05 |
---|---|
자바의 유용한 클래스 - Class 클래스 (0) | 2021.04.28 |
자바의 메모리 영역과 가상 메서드 (0) | 2021.04.17 |