Giken Dev
반응형

 



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 필드를 변경하는 메서드는 없음
}

 

반응형
profile

Giken Dev

@기켄

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!