Java/자바 정리

50. final 필드 - 수정 불가능한 데이터 만들기

코딩하는냥이 2025. 4. 29. 14:13
반응형

이번 강의에서는 자바 클래스와 필드, 메서드 등에 적용할 수 있는
접근 제한자(access modifier)에 대해 학습합니다.
접근 제한자는 코드의 보안성과 설계 구조를 명확하게 만들기 위해 사용되며,
패키지 또는 객체 간 접근을 제어합니다.


📦 클래스 코드 (Korean.java)

package ch06.sec11.exam01;

public class Korean {
	final String nation = "대한민국";
	final String ssn;
	String name;

	public Korean(String ssn, String name) {
		this.ssn = ssn;
		this.name = name;
	}
}

📌 실행 코드 (KoreanExample.java)

package ch06.sec11.exam01;

public class KoreanExample {
	public static void main(String[] args) {
		Korean k1 = new Korean("123456-1234567", "자바킴");

		System.out.println(k1.nation);
		System.out.println(k1.ssn);
		System.out.println(k1.name);

		k1.name = "김자바";
	}
}

💬 코드 설명

  • final String nation = "대한민국";
    → 선언과 동시에 초기화한 필드 → 절대 변경 불가
  • final String ssn;
    → 생성자에서만 초기화할 수 있음 → 이후 변경 불가
  • String name;
    → 일반 필드 → 자유롭게 읽고 쓸 수 있음
  • 생성자 Korean(String ssn, String name)
    → 객체 생성 시 주민등록번호와 이름을 초기화
  • k1.name = "김자바";
    → name 필드는 수정 가능 (final이 아님)

💻 실행 결과

대한민국
123456-1234567
자바킴

※ name을 "김자바"로 변경했지만 출력은 안 했기 때문에 변경 내용은 확인되지 않음.


📌 간단 정리

필드명 final 여부 설명
nation O "대한민국" 고정, 변경 불가
ssn O 생성자에서만 초기화 가능, 이후 변경 불가
name X 자유롭게 변경 가능

💡 포인트 정리

  • final 필드는 한 번만 초기화 가능하며 이후 수정 불가
  • 선언과 동시에 초기화하거나, 생성자에서 초기화해야 함
  • 개인 식별정보(ssn 등)처럼 절대 변하지 않아야 하는 값에 final을 적용
  • 일반 필드는 자유롭게 읽고 쓸 수 있지만, 설계에 따라 final 적용 여부를 결정