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 클래스는 부모 클래스가 될 수 없기 때문에 자식 클래스를 만들 수 없습니다.
public final class 클래스명 { ... }
자바에서 final 클래스의 대표적인 예는 자바 표준 API에서 제공하는 String 클래스로 String 클래스를 들어가서 확인해 보면 아래와 같이 final 키워드가 선언되어 있는 것을 확인할 수 있습니다.
'Java' 카테고리의 다른 글
[Java] 스트림(Stream)이란 (0) | 2024.11.04 |
---|---|
[Java] 제네릭이란? (0) | 2024.11.03 |
[Java] 인터페이스란 무엇인가? (0) | 2024.10.30 |
[Java] 추상 클래스란 무엇인가? (0) | 2024.10.30 |
[Java] 객체 지향 프로그래밍(OOP)의 4가지 특징과 원칙(SOLID) (0) | 2024.10.29 |