반응형
☕️ final 이란?
자바에서는 동작을 제한할 수 있는 final 키워드를 제공하며, final 키워드는 변수, 메서드, 클래스에 사용이 가능하다.
☕️ final 변수
변수에 final 키워드를 사용할 경우, 더 이상 값을 변경하지 못하도록 제한을 할 수 있다.
public void final_변수_테스트() {
int normalVariable = 0;
final int finalVariable = 0;
normalVariable = 1;
finalVariable = 1; // 오류. Cannot assign a value to final variable 'finalVariable'
}
단, 인스턴스 변수의 경우에는 생성자 또는 초기화 블럭에서 값을 할당할 수 있다.
public class FinalKeyword {
final int finalVar1;
final int finalVar2;
// 생성자를 통한 값 할당
FinalKeyword() {
finalVar1 = 1;
}
// 초기화블럭을 통한 값 할당
{
finalVar2 = 2;
}
public static void main(String[] args) {
}
}
☕️ final 메서드
메서드에 final 키워드를 사용할 경우, 재정의를 제한할 수 있다.
class ParentClass {
void normalMethod() {
// ...
}
final void finalMethod() {
// ...
}
}
class ChildClass extends ParentClass {
@Override
void normalMethod() {
super.normalMethod();
}
@Override
void finalMethod() { // 오류. 'finalMethod()' cannot override 'finalMethod()' in 'basic.etc.ParentClass'; overridden method is final
super.finalMethod();
}
}
☕️ final 클래스
클래스에 final 키워드를 사용할 경우, 상속을 제한할 수 있다.
class NormalClass {
}
final class FinalClass {
}
class NormalChildClass extends NormalClass {
}
class FinalChildClass extends FinalClass { // 오류. Cannot inherit from final 'basic.etc.FinalClass'
}
References.
1. 비타민찌 - [Java] Final 의미, 사용법, final 키워드에 대한 이해
2. Techie Delight - Java의 Final 키워드 – 최종 변수, 메서드 및 클래스
3. hudi.blog - Java 에서 final 키워드 사용하기
반응형
'Java' 카테고리의 다른 글
[Java] 추상 클래스(Abstract Class) (0) | 2023.07.26 |
---|---|
[Java] 래퍼 클래스(Wrapper Class)와 박싱(Boxing), 언박싱(Unboxing) (0) | 2023.07.25 |
[Java] 접근제어자 (0) | 2023.04.21 |
[Java] String, StringBuffer, StringBuilder 차이 (2) | 2023.04.16 |
[Java] 클래스, 객체, 인스턴스 차이 (0) | 2023.04.12 |