[Java] final 을 사용하는 모든 경우 - 예제와 함께 이해하기

2023. 9. 30. 15:02·Programming Language/Java
반응형

 



final 키워드는 코드의 안정성을 높이고 의도를 명확히 표현하는 데 도움을 주며,
상수, 불변 객체, 메서드 오버라이딩 방지 등 다양한 상황에서 유용하게 사용됩니다.

 

개요

final 이라는 키워드를 사용하는 대부분의 경우는
단순히 변수에 붙여서 상수로 지정하는 것입니다.
final 을 사용했을 때 유용한 경우가 더 있기에 이번 포스팅에서 알아보고, 적극 사용해보려 합니다.

아래에서 final 키워드의 다양한 사용 사례를 예제와 함께 설명하겠습니다.

 

 

 

 

final 변수

final 변수는 한 번 초기화되면 값을 변경할 수 없습니다. 이를 상수(constant)로 사용하거나 값이 변경되지 말아야 할 경우에 유용합니다.

public class FinalVariableExample {
    public static void main(String[] args) {
        final int constantValue = 42;
        // constantValue = 100; // 오류: final 변수는 재할당 불가능

        System.out.println("상수 값: " + constantValue);
    }
}

 

 

 

 

 

final 메서드

final 메서드는 하위 클래스에서 재정의(오버라이딩) 할 수 없습니다. 이는 메서드의 동작을 변경하지 못하게 하려는 경우에 사용됩니다.

public class Parent {
    public final void doSomething() {
        System.out.println("부모 클래스에서 정의된 final 메서드");
    }
}

public class Child extends Parent {
    // 오류: final 메서드를 재정의할 수 없음
    // public void doSomething() {
    //     System.out.println("자식 클래스에서 오버라이딩한 메서드");
    // }
}

 

 

 

 

final 클래스

final 클래스는 상속할 수 없습니다. 이는 특정 클래스가 다른 클래스에서 상속되지 못하도록 하려는 경우에 사용됩니다.

public final class FinalClass {
    // ...
}

// 오류: final 클래스를 상속할 수 없음
// public class SubClass extends FinalClass {
//     // ...
// }

 

 

 

 

final 매개변수

메서드의 매개변수를 final로 선언하면 메서드 내에서 해당 매개변수를 변경할 수 없습니다. 이는 메서드 내에서 매개변수의 값이 변경되지 않도록 보장합니다.

public class FinalParameterExample {
    public void printMessage(final String message) {
        // message = "새로운 메시지"; // 오류: final 매개변수는 재할당 불가능
        System.out.println(message);
    }

    public static void main(String[] args) {
        FinalParameterExample example = new FinalParameterExample();
        example.printMessage("안녕하세요!");
    }
}

 

 

 

 

 

 final 필드 (멤버 변수)

final 필드는 객체가 생성될 때 초기화되며, 이후에는 변경할 수 없습니다. 주로 불변(immutable) 객체를 생성할 때 사용됩니다.

public class ImmutableClass {
    private final int value;

    public ImmutableClass(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    // value 필드를 변경하는 메서드는 없음
}

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Programming Language > Java' 카테고리의 다른 글

[Java] 디자인패턴과 안티 패턴을 알아보자.  (0) 2023.10.08
[Java] Enum과 Builder 패턴을 예제와 함께 알아보자.  (0) 2023.10.06
[Java] 객체 지향 프로그래밍의 5가지 기본 원칙 SOLID 를 예제와 함께 알아 보자. (2)  (0) 2023.09.29
[Java] 객체 지향 프로그래밍의 5가지 기본 원칙 SOLID 를 예제와 함께 알아 보자. (1)  (0) 2023.09.27
[Java] 의존 관계에 대해 예제와 함께 알아보자.  (0) 2023.09.26
'Programming Language/Java' 카테고리의 다른 글
  • [Java] 디자인패턴과 안티 패턴을 알아보자.
  • [Java] Enum과 Builder 패턴을 예제와 함께 알아보자.
  • [Java] 객체 지향 프로그래밍의 5가지 기본 원칙 SOLID 를 예제와 함께 알아 보자. (2)
  • [Java] 객체 지향 프로그래밍의 5가지 기본 원칙 SOLID 를 예제와 함께 알아 보자. (1)
Giken
Giken
𝐒𝐲𝐬𝐭𝐞𝐦.𝐨𝐮𝐭.𝐩𝐫𝐢𝐧𝐭𝐥𝐧("𝐇𝐞𝐥𝐥𝐨 𝐖𝐨𝐫𝐥𝐝!");
  • Giken
    개발자 기켄
    Giken
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Programming Language (26)
        • C (3)
        • C++ (2)
        • Java (19)
      • Web (4)
      • Database (1)
        • SQL (5)
      • Spring (10)
      • PHP (7)
      • Linux (1)
      • Server (1)
      • Infra (3)
      • Algorithm (74)
        • 백준 (71)
        • 프로그래머스 (0)
      • 프로젝트 (2)
      • Etc (8)
      • 낙서 (5)
  • 블로그 메뉴

    • GitHub
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    9498
    1330
    평년
    SQL
    2753
    SQL고득점키트
    2588
    C
    DB
    백준
    윤년
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Giken
[Java] final 을 사용하는 모든 경우 - 예제와 함께 이해하기
상단으로

티스토리툴바