final 키워드
"final"은 변경 불가능성(immutable)을 강제하는 기능으로, 필드, 메서드, 클래스에 각각 적용될 수 있습니다.
이 키워드는 객체 지향 프로그래밍의 안정성과 확장성을 증가시켜주는 강력한 도구입니다.
1. final필드
"final" 키워드를 사용하여 선언된 필드는 초기값이 설정된 이후에는 변경할 수 없습니다.
즉, 한 번 값을 할당하면 다시 변경할 수 없는 상수가 됩니다.
final 필드는 다음과 같이 선언합니다.
class MyClass {
final int MAX_COUNT = 100; // final 필드 선언
// ...
}
final 필드는 주로 상수(Constant) 값을 표현하는 데 사용됩니다.
다른 메서드에서 값을 변경하거나, 서브 클래스에서 재정의할 수 없도록 하기 위해 final 필드를 사용합니다.
2. final 메서드
"final" 키워드를 사용하여 선언된 메서드는 하위 클래스에서 오버라이드(재정의)할 수 없습니다.
즉, final 메서드는 부모 클래스에서 정의된 그대로 사용되며, 하위 클래스에서 변경할 수 없습니다.
final 메서드는 다음과 같이 선언합니다.
class Parent {
final void doSomething() { // final 메서드 선언
// 메서드 내용
}
}
class Child extends Parent {
// 오버라이드 불가능
}
final 메서드는 부모 클래스에서 더 이상 변경되지 않아야 하거나,
다른 메서드와의 조합으로 불변성을 유지하고 싶을 때 사용됩니다.
3. final 클래스
"final" 키워드를 사용하여 선언된 클래스는 더 이상 상속될 수 없습니다.
즉, final 클래스는 다른 클래스가 상속해서 확장될 수 없으며, 최종적인 형태로 사용됩니다.
final 클래스는 다음과 같이 선언합니다.
final class MyFinalClass { // final 클래스 선언
// 클래스 내용
}
final 클래스는 주로 보안성이나 불변성을 보장하기 위해 사용됩니다.
final 클래스로 선언된 경우, 해당 클래스의 멤버들은 더 이상 하위 클래스에 의해 변경될 수 없습니다.
4. final 키워드의 활용
- 불변클래스(Immutable Class) 구현
- final 키워드는 불변 클래스의 구현에 활용될 수 있습니다.
- 불변 클래스는 객체가 생성된 후에 그 상태를 변경할 수 없는 클래스를 말합니다.
- final 필드를 사용하여 객체 내부의 상태를 변하지 않도록 보장할 수 있습니다.
- 보안성 강화
- final 키워드는 클래스나 메서드를 변경 불가능하게 만들기 때문에, 보안성을 강화하는데 사용될 수 있습니다.
- 예를 들어, 보안상 중요한 메서드의 재정의를 방지할 수 있습니다.
- 코드 안정성 증가
- final 키워드를 사용하여 변경할 수 없는 상수나 메서드의 재정의를 막는 등 코드의 안정성을 증가시킬 수 있습니다.
- 이로 인해 의도치 않은 버그나 오류를 방지할 수 있습니다.
5. 주의 사항
- final 필드의 초기화는 선언 시에 직접 초기화하거나, 생성자에서 초기화해야 합니다.
- 초기화되지 않은 final 필드를 사용하려고 하면 컴파일 에러가 발생합니다.
- final 클래스는 상속이 불가능하기 때문에, 상속이 필요한 경우에는 final 키워드를 사용해서는 안됩니다.
자바의 final 키워드는 변경 불가능성을 강제하는 강력한 기능으로, 필드, 메서드, 클래스에 적용되어 객체 지향 프로그래밍의 안정성과 확장성을 높여줍니다.
잘못된 정보는 댓글로 알려주시면 감사하겠습니다.
'Java' 카테고리의 다른 글
Java - 31. 자바의 다형성(Polymorphism)과 타입 변환(casting) 연산자 (0) | 2023.08.02 |
---|---|
Java - 30. 자바의 super 키워드 (0) | 2023.08.01 |
Java - 29. 자바의 this 키워드 (0) | 2023.07.31 |
Java - 28. 자바 상속(Inheritance) (0) | 2023.07.30 |
Java - 27. 자바 싱글톤 패턴(Singleton Pattern) (0) | 2023.07.29 |