2024. 4. 16. 18:45ㆍJava
자바에서 클래스 내부에 또 다른 클래스를 정의하는 개념
- 외부 클래스의 멤버처럼 취급
- 특별한 접근 권한과 기능을 가짐
- 내부 클래스는 주로 외부 클래스와 긴밀하게 관련된 작업을 수행하기 위해 사용
1. 접근성과 은닉성
- 외부 클래스의 필드와 메소드에 직접적으로 접근할 수 있음
- 외부 클래스의 private 멤버들에도 접근이 가능하다는 것을 의미
- 외부에서는 내부 클래스의 private 멤버에 접근할 수 없어 은닉성을 제공
2. 코드의 조직화
- 관련된 기능을 같은 외부 클래스 안에 묶어두면, 코드를 더 잘 조직화하고 관리 할 수 있음
- 코드의 가독성과 유지보수성을 향상시킴
3. 종류
- 멤버 내부 클래스, 로컬 내부 클래스, 익명 내부 클래스, 정적 내부 클래스
4. 특정 상황에 적합
- 내부 클래스는 특정 상황에서만 유용함. 예를 들어, 한 클래스가 다른 클래스의 동작을 확장하거나 보조하는 경우, 또는 인터페이스의 구현을 숨기고 싶은 경우에 주로 사용
로컬 내부 클래스
- 메소드 내부에 정의되는 클래스
- 주로 특정 메소드에서만 사용되는 기능을 구현하는 데 사용
1. 메소드 내 정의
2. 접근 제한
3. 외부 메소드의 변수 접근
4. 인스턴스 생성
public class OuterClass {
public void someMethod() {
class LocalInnerClass {
public void localMethod() {
// 로컬 내부 클래스의 메소드 내용
}
}
LocalInnerClass lic = new LocalInnerClass();
lic.localMethod();
}
}
-이와 같은 로컬 내부 클래스는 특정 메소드의 작업을 지원하기 위해 일시적으로 필요한 기능을 구현할 때 사용
JDK에서 로컬 내부 클래스 사용 사례
- Swing과 AWT 이벤트 처리
- 스레드 작업
- 콜백 메커니즘
정적 내부 클래스
- 외부 클래스의 정적 멤버처럼 취급되는 내부 클래 스
- 정적 내부 클래스는 외부 클래스 내부에 static 키워드를 사용하여 정의
- 이 클래스는 외부 클래스의 정적 멤버처럼 취급
- 외부 클래스의 인스턴스 변수나 메소드에 접근할 수 없음
- 외부 클래스의 정적 변수나 정적 메소드에는 접근 가능(static)
public class OuterClass {
// 외부 클래스의 멤버 변수와 메소드
public class InnerClass {
// 멤버 내부 클래스의 멤버 변수와 메소드
}
}
OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
inner.someMethod(); // 정적 내부 클래스의 메소드 호출
JDK에서 정적 내부 클래스 사용 사례
- 컬렉션 프레임워크의 Iterator 구현
- Map 인터페이스의 Entry 클래스
- 스레드 관련 클래스들의 헬퍼 클래스
- GUI 컴포넌트의 이벤트 리스너
'Java' 카테고리의 다른 글
멀티 스레드(Thread) (1) | 2024.04.22 |
---|---|
Java IO(입출력) (0) | 2024.04.22 |
예외처리(Exception) (1) | 2024.04.16 |
인터페이스(Interface) (0) | 2024.04.16 |
추상 클래스 (0) | 2024.04.16 |