본문 바로가기

자바

자바 final

final은 변수, 메서드, 클래스에 사용되고 있다.

 

1. final 변수:
1) final로 선언된 변수는 값을 변경할 수 없는 상수이다.
2) final 변수는 선언과 동시에 초기화되어야 하며, 이후에는 값을 변경할 수 없다.
3) final 변수는 주로 고정된 값을 사용해야 할 때 사용한다.


2. final 메서드:
1) final로 선언된 메서드는 하위 클래스에서 오버라이딩(재정의)할 수 없다.
2) final 메서드는 부모 클래스에서 정의된 동작을 변경하지 못하도록 제한다.
3) final 메서드는 부모 클래스에서 최종적으로 구현된 동작을 가지는 경우 사용한다.


3. final 클래스:
1) final로 선언된 클래스는 다른 클래스가 상속받을 수 없다.
2) final 클래스는 확장될 수 없으며, 다른 클래스에서 상속받아 하위 클래스를 만들 수 없다.
3) final 클래스는 주로 더 이상 확장되지 않아야 하는 경우나 보안 및 성능상의 이유로 사용한다.

 

4. final 사용 목적
1) 불변성: final 변수를 사용하여 값을 변경할 수 없는 상수로 선언하여 불변성을 유지할 수 있다.
2) 안전성: final 메서드를 사용하여 부모 클래스에서 이미 검증된 동작을 하위 클래스에서 변경되지 않도록 할 수 있다.
3) 보안: final 클래스를 사용하여 클래스의 상속을 제한함으로써 외부에서의 잘못된 사용을 방지할 수 있다.

 

5. final 사용 예시

public class Example {
    public static final int MAX_COUNT = 100;
    public final String name;
    
    public Example(String name) {
        this.name = name;
    }
    
    public final void printMessage() {
        System.out.println("This is a final method.");
    }
}

public final class FinalClass {
    // Class implementation
}

MAX_COUNT는 final로 선언된 상수로, 초기화된 값 이후에 변경할 수 없다.

name 변수는 final로 선언되어 생성자에서 초기화되며, 이후에는 값을 변경할 수 없다.

printMessage() 메서드는 final로 선언되어 하위 클래스에서 오버라이딩할 수 없다.

FinalClass는 final로 선언된 클래스로, 다른 클래스가 상속받을 수 없다.