final

final - 지역변수

  • final 키워드가 붙으면 더는 값을 변경할 수 없음.

public class FinalLocalMain {

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

final - 필드(멤버 변수)

public class Member {
    final int value;
    
    public Member(int value) {
        this.value = value;
    }
}
  • final을 필드에 사용할 경우 해당 필드는 생성자를 통해서 한번만 초기화 될 수 있다.

  • 사실 final + 필드 초기화를 하는 경우 static을 붙여서 사용하는게 맞다. 인스턴스가 생성될때마다 value가 힙 영역에 생성되기 때문이다.

상수(Constant)

  • 단 하나만 존재하는 변하지 않는 고정된 값

  • static final 키워드 사용

참조형 변수 data에 final이 붙은 경우?

  • 참조형 변수에 들어있는 참조값을 변경 못하는 것인지 참조하는 대상의 값은 변경할 수 있다.

final - 클래스

  • 상속 끝!

  • final로 선언된 클래스는 확장될 수 없다. 다른 클래스가 final로 선언된 클래스를 상속받을 수 없다.

final - 메서드

  • 오버라이딩 끝

  • final로 선언된 메서드는 오버라이드 될 수 없다.

Last updated