final
- final 키워드는 변수, 메서드, 클래스 등에 적용할 수 있다.
- final 키워드를 사용하면 해당 요소에 대한 변경이 금지되어 불변성을 부여하거나, 상수를 정의하거나, 상속을 제한하는 등의 목적으로 사용된다.
- final class는 상속이 불가하다.(서브클래스를 가질 수 없다.)
- final 메서드는 재정의가 불가하다.
- final 변수는 값의 변경이 불가하다.
1. final 변수
- final 변수는 한번 값을 할당하면 그 값을 변경할 수 없다. (해당 변수는 상수가 된다.)
- final 변수는 선언시에 초기화하는 방법과, 생성자를 통하여 초기화하는 방법이 있는데 만약 초기화하지 않고 남겨두면 컴파일 에러가 발생한다.
2. final 메서드
- final 메서드는 자식 클래스에서 부모 클래스의 메서드를 재정의하지 못하게 한다. (오버라이딩 불가능)
- 클래스에 final이 붙지 않는다면 상속은 가능하고, 자식 클래스에서 final 메서드의 참조는 가능하다.
- 부모 클래스에서 정의한 method 기능을 자식 클래스가 그대로 쓰게 하고 싶을 때 사용한다.
3. final 클래스
- final을 클래스에 사용하면 해당 클래스는 상속이 불가하다.
- final 클래스는 자식 클래스를 가질 수 없고, 오직 외부에서 객체 생성을 통해서만 사용할 수 있다.
- fianl 클래스의 대표적인 예는 String class이다. 상속이 불가하기 때문에 내부의 모든 메서드는 오버라이딩이 불가하다.
- 주로 라이브러리 클래스나 프레임워크에서 안정성을 유지하기 위해 사용된다.
*상수(static final)
- 자바에서는 불변의 값을 저장하는 필드를 상수(constant)라고 부른다.
- 상수는 객체마다 저장할 필요가 없는 공용성을 가져야 하며, 여러가지 값으로 초기화될 수 없기 때문에 static과 final 제한자를 동시에 붙여 선언한다.
- 상수 이름은 모두 대문자로 작성하는 것이 관례이고, 연결된 단어라면 (_)로 단어들을 연결한다.
'LANG.. > JAVA' 카테고리의 다른 글
예외처리(checked exception / unchecked exception) (0) | 2024.01.18 |
---|---|
abstract & interface (0) | 2024.01.17 |
[디자인 패턴] 템플릿 메소드 패턴 (Template Method Pattern) (1) | 2024.01.16 |
[디자인패턴] 싱글톤 패턴(Singleton Pattertn) (0) | 2024.01.16 |
static (0) | 2024.01.12 |