final 키워드에 대해 잘 알고있다고 자신했지만 공부해보니 아직 부족한 점이 있어 블로그를 남기게 되었다.
final 키워드란
Java에서 final 키워드는 변수, 메서드, 또는 클래스에 대한 변경 불가능성을 지정하는 데 사용된다. final 키워드를 사용하면 그 요소는 한 번 할당되거나 정의된 후 변경될 수 없다. 이는 코드의 가독성, 안정성, 유지보수성을 향상시키는데 도움이 된다.
사용법
1. 변수에 final 사용
- 지역 변수: final로 선언된 지역 변수는 한 번만 값을 할당할 수 있다. 초기화 이후, 그 값은 변경될 수 없다.
- 필드(맴버 변수): 객체의 필드에 final을 사용하면, 객체가 생성될 때 필드를 초기화해야 하며, 그 이후에는 그 필드의 값을 변경할 수 없다.
- 파라미터: 메서드의 파라미터를 final로 선언하면, 메서드 안에서 파라미터의 값을 변경할 수 없다. 이는 메서드 안에서 파라미터가 참조하는 데이터의 무결성을 유지하는 데 도움이 된다.
2. 메서드에 final 사용
- final로 선언된 메서드는 하위 클래스에서 오버라이드 될 수 없다. 이를 통해, 상위 클래스의 기본 동작을 보존하고 변경되지 않게 한다.
3. 클래스에 final 사용
- final로 선언된 클래스는 다른 클래스가 상속할 수 없다. 즉, final 클래스는 확장될 수 없으며, 항상 기본 형태를 유지한다. 이는 보안과 불변성을 유지하는 데 유용하다.
불변 객체와의 차이점
final 변수는 변수의 재할당을 막지만, 객체의 내부 상태 변화는 막지 않는다. 반면, 불변 객체는 객체가 생성된 후에는 그 상태가 절대로 변하지 않음을 보장한다. 둘 다 코드의 안정성과 예측 가능성을 높이는 데 기여하지만, 적용되는 범위와 의미가 다르다.
- 예를 들어, final로 선언된 List 객체는 다른 List 객체로 재할당될 수는 없지만, 리스트에 항목을 추가하거나 제거하는 것은 가능하다.
- 불변 객체의 예로는 String, Integer 등 Java의 표준 라이브러리에 포함된 클래스들이 있다. 이러한 객체들은 내부 상태를 변경하는 메소드를 제공하지 않는다.
'Java' 카테고리의 다른 글
2-7 클래스와 객체2 (3) - static 변수 (1) | 2024.03.18 |
---|---|
2-6 클래스와 객체2 (2) - 객체 간의 협력 ex) 승객과 버스 (0) | 2024.03.18 |
2-5 클래스와 객체2 (1) - this (0) | 2024.03.14 |
2-4 클래스와 객체1 (4) - 참조 자료형, private (0) | 2024.03.14 |
2-3 클래스와 객체1 (3) - 클래스, 인스턴스, 참조변수, 참조값, 생성자 (0) | 2024.03.14 |