본문 바로가기

WEB/Java

static, final 키워드에 대하여 - ② final 키워드

static, final 키워드에 대한 정리
이론적인 의미와 선언, 사용법, 그리고 활용되는 케이스

final

  • '최종적'이라는 의미
  • final 키워드는 필드, 클래스, 메소드 선언에 사용된다.

1. final 필드

초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없다는 의미

1.1 final 필드 선언 방법

final 타입 필드 [= 초기값];

final 필드의 초기값을 주는 방법

  • 필드 선언 시에 주는 방법
  • 생성자에서 주는 방법 - 생성자는 final 필드의 초기화를 마쳐야 하는데, 만약 초기화되지 않은 final 필드를 그대로 남겨두면 컴파일 에러가 발생한다.
public class Person {
    final String nation = "Korea";
    final String ssn;
    String name;

    public Person(String ssn, String name) {
        this.ssn = ssn;
        this.name = name;
    }
}

 

1.2 상수 (static final)

final 필드와 상수(static final)의 차이

  • final 필드
    • final 필드는 객체마다 저장되고, 생성자의 매개값을 통해 여러가지 값을 가질 수 있다.
  • 상수 (static final)
    • 불변의 값이라 객체마다 저장할 필요가 없는 공용성을 띠고 있으며, 여러가지 값으로 초기화될 수 없다.
    • 상수는 객체마다 저장되지 않고 클래스에만 포함되므로 static 이면서 final 이어야 한다.
    • 상수 선언 방법 두 가지
static final 타입 상수 [= 초기값];
static final 타입 상수
static {
    상수 = 초기값;
}

2. final 클래스

final 클래스는 상속할 수 없는 클래스이다. 즉, final 클래스는 부모 클래스가 될 수 없어 자식 클래스를 만들 수 없다.

2.1 final 클래스 선언 방법

public final class 클래스 { ... }

2.2 final 클래스의 대표적인 예

  • Java 표준 API의 String 클래스
    • extends 키워드로 상속할 수 없다.

 

3. final 메서드

final 메서드는 오버라이딩(Overriding) 할 수 없는 메서드이다. 즉, 자식클래스에서 재정의할 수 없다.

3.1 final 메서드 선언 방법

public final 리턴타입 메서드( [매개변수, ...] ) { ... }

 

 

 

출처

- 이것이 자바다