[Java] - final 키워드

chancehee·2023년 12월 5일
0

자바

목록 보기
12/12
post-thumbnail

[ 개요 ]

Java 언어를 많이 사용했지만, final이 불변의 의미를 갖는다 라고 너무 추상적으로 생각했다.

final이 변수, 메서드, 클래스에 사용될 때 어떻게 동작하는지 명확히 이해하고 사용해야할 필요성을 느꼈다.

[ final 변수 ]

한번 값을 선언하면 Immutable 형식(값 변경이 불가능한)이 된다. (variable, arguments)

final String x = "chan"; 
x = "chany"; // 컴파일 에러 (변경 불가)
public void func(final String x) {
	x = "chany"; // 컴파일 에러 (변경 불가)
}

[ final 클래스 ]

상속하는 것을 허용하지 않는다.

final calss LCH {
	final String x;
    public LCH() {
    	x = "chan";
    }
}

class newLCH extends LCH {} // 컴파일 에러 (상속 불가)

[ final 메서드 ]

메서드의 오버라이딩을 금지시킨다.
(클래스의 상속은 되지만 메서드를 재정의하여 사용할 수 없다.)

class LCH {
	final String x = "chan";
    
    final String getChan() {
    	return x;
    }
}
class newLCH extends LCH {
	
    @Override
    String getChan() { // 컴파일 에러 (오버라이딩 불가)
    	return "newChan";
    }
}

[ 정리 ]

개인적으로 final을 변수 외에 사용할 일이 많이 없었는데, 팀 프로젝트를 수행할 때 final을 사용하면 명확하게 의도를 파악하고 개발할 수 있다는게 가장 큰 장점인 것 같다고 느꼈다.

출처

0개의 댓글