Java 내부 클래스에 static을 붙이는 이유
Java에서는 클래스 안에 또 다른 클래스를 정의할 수 있는데, 이를 내부 클래스 (Nested Class)라고 한다.
그리고 내부 클래스 중에서 static
키워드를 붙일 수 있는 경우가 있는데,
이번 글에서는 왜 내부 클래스에 static을 붙이는지를 쉽게 설명하겠다.
✅ 내부 클래스란?
클래스 내부에 정의된 클래스다. 예를 들어:
public class Outer {
class Inner {
// 일반 내부 클래스
}
static class StaticInner {
// static 내부 클래스
}
}
✅ 그럼 static은 왜 붙일까?
내부 클래스에 static
을 붙이면 외부 클래스의 인스턴스 없이도 내부 클래스를 생성할 수 있다.
종류 | 생성 방식 | 외부 클래스 인스턴스 필요? |
---|---|---|
일반 내부 클래스 | Outer outer = new Outer(); |
✅ 필요함 |
static 내부 클래스 | Outer.StaticInner inner = new Outer.StaticInner(); |
❌ 필요 없음 |
✅ 언제 static을 붙이면 좋을까?
- 내부 클래스가 외부 클래스의 인스턴스 변수나 메서드에 접근할 필요가 없을 때
(static 메서드가 static 변수에만 접근 가능하듯 static 내부클래스도 static 변수나 메서드에만 접근가능) - 내부 클래스가 외부 클래스와 논리적으로만 연관되어 있을 때
- Helper 클래스처럼 독립적으로 동작하는 경우
✅ 예제 코드
public class Outer {
static class Helper {
static void printHelp() {
System.out.println("도움말 출력 중...");
}
}
public static void main(String[] args) {
Outer.Helper.printHelp(); // 외부 인스턴스 없이 바로 사용 가능
}
}
✅ 정리
내부 클래스에 static을 붙이는 이유는
"외부 클래스의 인스턴스에 의존하지 않고 독립적으로 사용하기 위해서"이다.
즉, 생성과 사용이 더 유연해지고, 메모리 사용도 효율적일 수 있다.
그래서 내부 클래스가 외부 클래스의 인스턴스 변수에 접근하지 않고, 독립적으로 존재해도 되는 상황이라면 static을 붙이는 것이 좋은 선택!
'Java' 카테고리의 다른 글
자바 enum (0) | 2024.12.09 |
---|---|
자바 리플렉션 (0) | 2024.12.07 |
[Java] JDK, JRE, JVM 질의응답 (ChatGPT) (1) | 2024.08.31 |
[Java] Reflection (2) | 2024.02.21 |
Generics (Java) (1) | 2024.02.12 |
댓글