-
<Java> 클래스 선언부에서 변수 값 재할당할 수 없는 이유JAVA 2025. 2. 25. 14:09반응형
클래스 단순한 설계도일 뿐 실제 실행되는 코드가 아니다.
클래스 선언부에서 실행 코드는 허용되지 않음
- 클래스는 단순한 설계도이므로, 클래스 선언부에서 변수를 변경하는 실행 코드를 작성할 수 없다.
- 변수 선언 시 int num = 10;처럼 초기화는 가능하지만, num = 20; 같은 재할당은 허용되지 않는다.
- 자바의 클래스 내부에는 "실행 코드"가 올 수 없고, "멤버 변수 선언"만 가능하기 때문이다.
그렇다면 "클래스에서 선언된 변수는 final 특성을 가지는게 아닌가?" 라는 생각을 해보았다.
final 과 "클래스 선언부에서 값 재할당 불가"의 차이점
자바에서 멤버 변수는 자동으로 final이 되지 않는다.
즉, 클래스 선언부에서 값을 바로 재할당할 수 없다고 해서, 해당 변수가 final처럼 동작하는 것은 아니다.
왜냐하면 객체가 생성된 후에는 값 변경이 가능하기 때문이다.final과 일반 변수의 차이점
특징일반 변수 (int num)final 변수 (final int num)
선언과 동시에 초기화 필요? ❌ (필요 없음) ✅ (필수) 생성자에서 값 변경 가능? ✅ (가능) ✅ (가능, 하지만 한 번만) 메서드에서 값 변경 가능? ✅ (가능) ❌ (불가능) 실행 중 값 변경 가능? ✅ (가능) ❌ (불가능) 즉, "클래스 내부에서 재할당할 수 없다"는 이유로 final과 동일하게 취급할 수 없다.
but 메소드와 생성자를 이용해 값을 재할당 할 수 있다.
'JAVA' 카테고리의 다른 글
<Java> Thread 상속과 Runnable 구현의 차이점 및 동기화 메소드 선언 (1) 2025.03.04 <Java> 로컬 클래스와 지역 변수의 생명 주기 (0) 2025.02.25 [Java] 인터페이스란? (2) 2025.02.13 [Java] 추상 클래스란? (0) 2025.02.12 [Java] 싱글톤이란? (0) 2025.02.12