본문 바로가기
won2dev-log
HomeArchiveTagsCategoriesAboutProjects
HomeArchiveTagsCategoriesAboutProjects
won2dev-logwon2dev-logwon2dev-log

비전공 개발자의 로그 | won2dev-log

Navigation
  • Home
  • Archive
  • About
  • Projects
Categories
  • Docs
  • TIL
  • Automation
  • Git · GitHub
  • Project
Tags
  • TIL
  • Java
  • Spring
  • Backend
  • n8n
더보기
About

기록을 거름 삼아 공유는 성장을 만든다.

LicensePrivacy
© won2dev 2026. All rights reserved.
Home›Docs›TIL - Java 기초: final 키워드와 불변 객체 설계
Docs

TIL - Java 기초: final 키워드와 불변 객체 설계

won2dev·2025년 03월 13일
#Java#TIL
TIL - Java 기초: final 키워드와 불변 객체 설계
⚠️ 이 글은 저작권 이슈로 인해 일부 내용이 수정 또는 제거되었습니다.

💬 배운 기술 / 지식

  • final 키워드의 의미
  • 변수, 메서드, 클래스에 적용
  • 불변(immutable) 객체 설계 방법
  • 불변의 장점과 활용 사례

🔒 final 키워드란?

  • 한 번 결정되면 변경 불가를 의미
  • 변수, 메서드, 클래스에 각각 다른 의미로 사용됨

📌 final 변수

종류의미
지역 변수초기화 이후 값 변경 불가
인스턴스 변수생성자에서 단 한 번만 초기화 가능
static final상수(Constant)처럼 사용됨 (대문자_스네이크_케이스 추천)
java
final int AGE = 20;
AGE = 30;  // ❌ 컴파일 오류
final int AGE = 20;
AGE = 30;  // ❌ 컴파일 오류

🚫 final 메서드

  • 해당 메서드를 서브클래스에서 오버라이딩 금지
java
public final void printName() { ... }
public final void printName() { ... }

🧱 final 클래스

  • 해당 클래스를 상속할 수 없음
  • 대표 예: String, Math, Integer 등
java
public final class SafeBox { ... }
public final class SafeBox { ... }

🧊 불변 객체(Immutable Object) 설계

불변 객체란?

생성 후 상태가 절대 바뀌지 않는 객체

✅ 불변 객체 만드는 방법

  1. final 필드 사용
  2. 생성자를 통해서만 초기화
  3. setter 메서드 제공 ❌
  4. 필요한 경우 내부 값 복사하여 리턴 (deep copy)
java
public final class User {
    private final String name;

    public User(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}
public final class User {
    private final String name;

    public User(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

💎 불변 객체의 장점

  • 스레드 안전성(Thread-safety) → 동기화 없이 공유 가능
  • 예측 가능한 동작
  • 객체 생성 시 모든 정보가 결정되므로 디버깅이 쉬움
  • 자바 핵심 클래스도 대부분 불변: String, LocalDate, BigDecimal 등

💡 느낀 점 / 참고 사항

  • final은 단순히 "못 바꾸게 막는 것"을 넘어서, 명확한 설계 의도 표현 수단
  • 코드 안정성과 가독성을 높여줌
  • 불변 객체는 값 중심 설계(Value Object)에 적합하며, 변경이 필요한 경우에는 새 객체 생성 방식 추천
공유하기
이전 글TIL - Java 기초: 인터페이스 설계다음 글 TIL - Java 기초: static, 객체 없이 공유하는 멤버의 비밀

목차

  • 💬 배운 기술 / 지식
  • 🔒 final 키워드란?
  • 📌 final 변수
  • 🚫 final 메서드
  • 🧱 final 클래스
  • 🧊 불변 객체(Immutable Object) 설계
  • ✅ 불변 객체 만드는 방법
  • 💎 불변 객체의 장점
  • 💡 느낀 점 / 참고 사항

카테고리

Docs

태그

#Java#TIL

최근 글

Git 요약 (1) - Rebase, Stash, Squash MergeTIL - MSA 핵심 요소 정리TIL - (4) Spring 어노테이션 정리: Mockito를 활용한 단위 테스트TIL - (3) Spring 어노테이션 정리: Lombok Getter, Setter와 생성자TIL - (2) Spring MVC와 WebFlux의 차이: 블로킹과 논블로킹