본문 바로가기

JAVA/추상화(Abstraction)

final 키워드

final 키워드는 자바에서 "변경불가", "확장불가"의 의미를 가지는 제어자임

클래스, 메서드, 변수에 사용할 수 있으며 사용하는 위치에 따라 의미가 달라진다

 

1. 위치에 따른 의미 정리

  • 클래스 : 상속이 불가능한 클래스
  • 메서드 : 오버라이딩이 불가능한 메서드
  • 변수 : 값 변경이 불가능한 상수, 일반적으로 static이 함께 붙으며 한번만 할당이 가능하다

final은 결국 대상의 변경이나 확장 자체를 금지하는 키워드라는 점에서 어떤 위치에서든 공통적인 성격을 가진다

 


final class FinalClass {
	final int x = 100; // final, 변경 불가
    
    final int getValue() { // 오버라이딩 할 수 없음
    	final int localVar = x; // 지역 상수
        return localVar;
    }
}

class SubClass extends FinalClass {
	// 컴파일 에러가 발생함. final 클래스는 상속할 수 없다
    // public int getValue() { } 를 활용하여 오버라이딩도 할 수 없다
}

 

 

1. final 변수

  • 초기화 후에 값을 변경할 수 없다
  • 선언 시 반드시 값을 할당하거나 생성자에서 한번만 초기화할 수 있다
class Example {
	final int number; // 생성자에서 초기화할 수 있다
    
    Example(int number) {
    	this.number = number; // 한번만 초기화할 수 있다, 이후에는 불가
    }
}

 

 

2. final 메서드

  • 메서드가 하위 클래스에서 재정의(오버라이딩) 되지 않도록 막는다
  • 보안 또는 설계 목적으로 메서드의 구현을 고정하고자 할 때 사용한다

 

 

3. final 클래스

  • 클래스가 상속되지 않도록 제한한다
  • java.lang.String, java.lang.Math 등등..
final class ConnotExtend {

}

class TryExtends extends ConnotExtend {
	// 컴파일 에러 일어남
}

 


정리

  1. final은 수정 또는 확장 금지를 의미하는 제어자임
  2. 클래스, 메서드, 변수 어디에 붙는지에 따라 구체적인 제약이 달라진다
  3. 설계의 안정성, 보안성, 유지보수성을 높이기 위해 자주 사용된다

'JAVA > 추상화(Abstraction)' 카테고리의 다른 글

추상 클래스와 인터페이스, 선택 기준과 활용 전략에 대해  (0) 2026.04.21
인터페이스(interface)  (0) 2026.04.21
추상 클래스  (0) 2026.04.20
abstract 제어자  (0) 2026.04.20
추상화(Abstraction)  (0) 2026.04.20