EEALL@ONCE

☕final 본문

언어💻/자바☕

☕final

올엣원스 2023. 9. 1. 08:04
728x90

1. **Final 필드**:
   - `final`로 선언된 필드는 한 번 초기화되면 값 변경이 불가능합니다.
   - 필드를 선언 시 또는 생성자에서 초기화해야 합니다. 초기화 후에는 수정이 불가능하므로, 필드의 값을 나중에 변경할 수 없습니다.

2. **Final 메서드**:
   - `final`로 선언된 메서드는 자식 클래스에서 오버라이드(재정의)할 수 없습니다.
   - 부모 클래스에 정의된 `final` 메서드는 그대로 사용되며, 자식 클래스에서 변경할 수 없습니다.

3. **Final 인스턴스**:
   - `final`로 선언된 인스턴스는 다른 객체로 변경할 수 없습니다.
   - 그러나 필드의 값은 변경 가능합니다. 객체의 내부 상태나 데이터를 수정하는 것은 허용됩니다. 주의할 점은 주소(참조)를 바꿀 수 없다는 것입니다.

4. **Final 클래스**:
   - `final`로 선언된 클래스는 하위 클래스를 가질 수 없습니다.
   - 다시 말해, 다른 클래스에서 이 `final` 클래스를 상속하여 확장시킬 수 없습니다. 이로 인해 클래스의 구조와 동작이 불변하게 유지됩니다.

`final` 키워드의 사용은 주로 불변성과 확장성을 제어하기 위해 필요한 상황에서 이루어집니다.

// Final 필드와 메서드를 가지는 클래스
class FinalExample {
    final int constantValue = 10; // Final 필드

    final void printMessage() { // Final 메서드
        System.out.println("This is a final method.");
    }
}

// Final 클래스
final class ImmutableClass {
    private final int value;

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

    public int getValue() {
        return value;
    }
}



728x90

'언어💻 > 자바☕' 카테고리의 다른 글

☕FTP 서버에 파일을 업로드  (0) 2023.09.11
☕Calendar calendar  (0) 2023.09.05
☕`Path filePath`와 `File file = filePath.toFile()  (0) 2023.08.31
☕접근 제어자  (0) 2023.08.28
☕캡슐화 (Encapsulation)란  (0) 2023.08.28