본문 바로가기

카테고리 없음

자바에서 final 키워드의 의미와 사용법에 대해 알아보자.

1. final 키워드의 개요

final 키워드는 자바에서 사용되는 예약어로, 변수, 메서드, 클래스에 적용될 수 있습니다. final로 선언된 요소는 변경될 수 없으며, 일종의 상수로 동작합니다. 상수는 값을 한 번 할당하면 변경할 수 없는 변수를 의미합니다.

final 키워드는 변수의 값을 변하지 않게 하거나, 메서드와 클래스를 상속과 오버라이딩으로부터 제한하는 역할을 합니다. 이를 통해 프로그래머는 더욱 안정적인 코드를 작성할 수 있습니다. 변수가 final로 선언되면 값을 수정하는 시도는 컴파일 시간에 오류로 판단됩니다. 마찬가지로, final로 선언된 메서드나 클래스는 오버라이딩이나 상속을 할 수 없습니다.

final 키워드의 사용은 성능 향상과 코드의 가독성 향상에도 도움을 줄 수 있습니다. 하지만 남용은 지양해야 하며, 적절한 상황에서 사용하는 것이 좋습니다. 앞으로 이어질 항목에서 final 변수와 메서드의 사용법에 대해 자세히 알아보겠습니다.

2. final 변수 사용법

final 변수는 값을 할당한 후에는 변경할 수 없는 변수입니다. 일반적으로 상수로 사용되며, 상수의 이름은 전부 대문자로 작성하는 것이 관례입니다. final 변수는 선언할 때 또는 생성자 내에서 초기화해야 합니다.

final 변수 사용법은 아래와 같습니다:

final int MAX_VALUE = 100; // final 변수를 선언하고 값을 할당

final double PI; // 선언만 하고 초기화하지 않음

public MyClass() {
    PI = 3.141592; // 생성자 내에서 final 변수에 값을 할당
}

public void calculateArea(final double radius) {
    final double area = PI * radius * radius; // 매개변수와 지역 변수에 final 키워드 사용
    //...
}

위의 예시에서, MAX_VALUE 변수는 final로 선언되어 값을 변경할 수 없습니다. PI 변수는 생성자 내에서 값을 할당하고, calculateArea 메서드의 매개변수와 지역 변수에도 final 키워드를 사용하여 값을 변경하지 못하게 합니다.

final 변수의 사용은 프로그램의 안정성을 높이고, 코드를 더욱 명확하고 직관적으로 만들어 줍니다. 메모리 효율적인 처리와 재사용 가능한 코드의 작성에도 도움을 줍니다. 하지만 모든 변수를 final로 선언하는 것은 권장되지 않으며, 필요한 경우에만 사용하는 것이 좋습니다.

3. final 메서드 사용법

final 메서드는 상속되지 않는 메서드를 정의하는 데 사용됩니다. final로 선언된 메서드는 하위 클래스에서 오버라이딩 될 수 없으며, 부모 클래스에서 이미 구현되어 있는 메서드의 수정을 방지합니다. 이를 통해 메서드의 일관성과 안정성을 유지할 수 있습니다.

final 메서드 사용법은 다음과 같습니다:

public class Parent {
    public final void someMethod() {
        // final 메서드의 구현
    }
}

public class Child extends Parent {
    // 오버라이딩 시도는 컴파일 오류 발생
    // public void someMethod() {
    //     // ...
    // }
}

위의 예시에서, Parent 클래스의 someMethod 메서드는 final로 선언되어 있기 때문에 Child 클래스에서 오버라이딩을 할 수 없습니다. 만약 Child 클래스에서 someMethod 메서드를 정의하려고 하면 컴파일 오류가 발생합니다.

final 메서드는 상속 관계의 클래스의 일관성과 안정성을 보장하기 위해 사용됩니다. final 메서드를 사용하면 부모 클래스가 일관된 동작을 갖도록 하고, 하위 클래스에서 의도하지 않은 수정을 방지할 수 있습니다.

하지만 final 메서드를 사용할 때에는 잘 고려해야 합니다. final 메서드는 하위 클래스에서 필요한 기능을 추가로 구현할 수 없게 됩니다. 따라서 상황에 따라서는 final 메서드의 사용을 지양하는 것이 좋습니다.