JAVA

[JAVA] final

준몽쓰 2025. 3. 16. 23:56

final

- 변수에 final 키워드가 붙으면 더는 값을 변경할 수 없다.

 

■ final 변수

public class A {
  public static void main(String[] args) {
     fianl int data1; // final 지역 변수
     data1 = 10; //최초 한번만 할당 가능
     
     final int data2 = 10; //final 지역 변수2
     
     method(10);
   }
   
   static void method(final int parameter) {
     //parameter = 20; 컴파일 오류
     }
   }

 - final 붙은 지역 변수는 최초 한 번만 값을 할당할 수 있고, 값을 변경하게 되면 에러 발생

 - 필드(멤버 변수)에도 객체가 생성될 때 필드를 초기화해야하며, 그 이후엔 필드 값 변경할 수 없다.

 

■ final 메서드

public class Animal {
  public final void eat() {
     System.out.println("동물은 먹는다");
    }
 }
 
 
 public class Dog extends Animal {
    public void eat() {                      
      System.out.println("강아지는 먹는다.");  
     }
   }

- final로 선언되면, 하위 클래스에서 해당 메서드를 오버라이드(재정의)할 수 없다.

- eat() 메서드를 오버라이드할 수 없음 (에러발생)

 

■ final 클래스

final class A {
  final String hello;
  A() {
     hello = "hello world";
    }
  }
  
 class B extends A { //컴파일 에러
 }

- 클래스에 final 붙이게 되면 상속할 수 없는 클래스가 됨

 

■ static final

- static + final = "고정된 + 최종적인"의 의미로, 상수를 선언하고자 할 때 사용

 

상수란?

static final double PI = 3.141592;

static + final로 선언된 PI 값은 3.141592라는 불변의 값을 가진다.

해당 값은 객체마다 저장될 필요가 없는 static 특징 + 여러 값을 가질 수 없는 final의 특징을 나타낸다.