final 키워드
final은 최종적, 마지막이라는 뜻을 갖고 있다. 이 final 키워드는 자바에서 변수, 메소드, 클래스에 선언되어 특별한 의미를 부여해준다.
final 변수
변수에 final 키워드가 선언되면 해당 변수가 생성될때 초기값이 정해지고 다시는 수정될 수 없음을 의미한다. final 변수는 다음과 같이 선언된다.
final 타입 필드 [= 초기값];
초기값은 변수 선언 시에 주는 방법과 생성자에서 주는 방법이 있다. 단순한 값이라면 변수 선언 시에 주면 되지만 복잡한 초기화 코드가 필요하거나 객체 생성 시 외부 데이터, 즉 파라미터에 의해 정해지는 경우에는 생성자에서 초기값을 지정해주어야 한다. 만약 final 변수를 선언만하고 생성자에서 값을 초기화 해주지 않는다면 컴파일 에러가 발생한다.
final 변수 선언과 초기화
public class Person {
public final String nation = "KOREA";
public final String rrn;
public String name;
public Person(String rrn, String name) {
this.rrn = rrn;
this.name = name;
}
}
final 메소드
메소드에 final 키워드가 선언되면 선언된 메소드는 더 이상 오버라이딩을 할 수 없다. 즉 부모 클래스에 final 메소드가 선언되어 있다면 자식클래스가 해당 부모 클래스를 상속했더라도 final 메소드를 재정의 할 수 없다는 의미이다. final 메소드는 다음과 같이 선언된다.
public final 리턴타입 메소드명( [매개변수, ...] ) { ... }
자식 클래스에서 final 메소드를 오버라이딩 해도 컴파일 에러가 발생한다.
final 클래스
클래스에 final 키워드가 선언되면 최종적인 클래스이으로 더 이상 상속할 수 없는 클래스가 된다. 즉 final 클래스는 부모 클래스가 될 수 없기 때문에 자식 클래스를 만들 수 없다. final 클래스는 다음과 같이 선언된다.
public final class 클래스명 { ... }
자바에서 final 클래스의 대표적인 예는 자바 표준 API에서 제공하는 String 클래스로 String 클래스를 들어가서 확인해 보면 아래와 같이 final 키워드가 선언되어 있는 것을 확인할 수 있다.
'Java' 카테고리의 다른 글
[Java] 인접행렬, 인접리스트 (0) | 2023.02.28 |
---|---|
[Java] 정적 멤버와 static (0) | 2023.02.23 |
[Java] 이것이 자바다 - IO 패키지 (2) | 2022.06.20 |
[Java] 이것이 자바다 - 스트림(Stream) (0) | 2022.06.19 |
[Java] 이것이 자바다 - 제네릭 (0) | 2022.06.07 |