Java에서 final 키워드의 활용
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- Java 개발자 (중급 이상)
- OOP 개념 학습자
- 객체 지향 설계 패턴 이해자
핵심 요약
final
변수는 초기화 후 값 변경 불가 (상수)final
메서드는 자식 클래스에서 오버라이딩 불가final
클래스는 확장 불가 (예:Integer
,String
등)- 참조 타입의
final
변수는 내부 값 변경 가능 (비전달성)
섹션별 세부 요약
1. **Final Variable (상수)**
- 초기화 방법: 선언 시, 생성자 내, 정적 블록 (정적 final 변수에 한함)
- 참조 타입 특성: 객체 재할당 불가, 내부 값은 변경 가능
```java
private final int[] array = new int[] {1, 2, 3};
finalKeywordExample.array[2] = 4; // 허용됨
finalKeywordExample.array = new int[] {1, 2, 3}; // 불가
```
2. **Final Method (오버라이딩 금지)**
- 자식 클래스에서 재정의 불가
```java
class Parent { final void finalMethod() { ... } }
class Child extends Parent { void finalMethod() {} } // 컴파일 오류
```
3. **Final Class (확장 금지)**
- 상속 불가 (예:
String
,Integer
등) - 불변성 보장 (자식 클래스가 상태 변경 방지)
```java
final class Parent { } // Child extends Parent 불가
```
결론
- 상수 정의 시
final
사용 (예:private final int MAX_VALUE = 100
) - 불변 객체 설계 시
final
클래스 활용 (예:String
,Integer
) - 참조 타입의
final
변수는 내부 값 변경 가능하나 재할당 불가 (비전달성 특성 활용)