Java

Java) final 키워드: 변수, 메서드, 클래스 제약 이해하기

pogun 2025. 1. 9. 17:56

final 변수 : 상수화

: final 키워드를 변수에 사용하면, 해당 변수는 상수화되어 값을 변경할 수 없다.

public class MainClass {
    public static void main(String[] args) {
		
        final int number = 10; // 변수 -> 상수(final 붙이면)
        // number = 20; // 불가능(상수라서)
    }
}

: final 변수를 초기화한 뒤에는 값을 변경할 수 없다.

: 상수로 사용되는 경우, 변수 이름을 대문자로 작성하는 것 낫다.

ex) final int MAX = 100;

추가 예제

public class MainClass {
    public static void main(String[] args) {
		
        final int MAX = 100;
        final int MIN = 1;
        int count = MAX;

        if (count <= MAX && count >= MIN) {
            // MAX와 MIN은 고정된 값으로 사용 가능
        }
    }
}

MAX = 프로그램에서 변하지 않는 최대값 상수

MIN = 프로그램에서 변하지 않는 최소값 상수

final 메서드 : 오버라이드 금지

: final 키워드를 메서드에 사용하면, 해당 메서드는 오버라이드(Override) 할 수 없다.

: 특정 메서드의 동작을 자식 클래스에서 변경하지 못하도록 보호할 때 유용하다.

class Parent {
    public final void method() {
        System.out.println("Parent method");
    }
}

class Child extends Parent {
	public void method() {} // 컴파일 에러: 오버라이드 불가
}

: 부모 클래스에서 final 메서드로 선언하면, 자식 클래스에서 수정할 수 없다.

: 보통 클래스 설계 시 중요한 동작을 고정하기 위해 사용된다.

final 클래스 : 상속 금지 

: final 키워드를 클래스에 사용하면, 해당 클래스는 상속할 수 없다.

: 해당 클래스를 변경 없이 사용하도록 강제할 때 유용하다.

final class Parent {
    public void method() {
        System.out.println("Parent method");
    }
}

class Child extends Parent { } // 컴파일 에러: 상속 불가

: final 클래스를 상속하려고 하면 컴파일 에러가 발생한다.

: 보통 불변 클래스를 만들거나 클래스 동작을 고정하기 위해 사용된다.