Language/Java

Java 기본 - final 키워드

레이튼 2023. 6. 29. 14:04

클래스 + final = 다른 클래스에서 상속하지 못한다.

메소드 + final = 다른 메소드에서 오버라이딩 하지 못한다.

변수 + final = 변하지 않는 상수값이 되어 새로 할당할 수 없는 변수가 된다.

 

finally - 코드 블록

try-catch 또는 try-catch-resource 구문에서 정상적으로 작업을 한 경우(try)와 에러가 발생했을 경우(catch)를 포함해

마무리해줘야하는 작업이 존재하는 경우 작성해주는 코드 블록이다.

점유하고 있는 리소스를 해제하는 등 마무리에서 꼭 실행해줘야하는 코드가 포함된다.

 

finalize() - 메소드

GC에 의해 호출되는 함수로 절대 호출하면 안되는 함수이다.

Object 클래스에 정의되어 있다.

GC의 발생시점은 규칙적이지 않기에 해당 메소드가 실행된다는 보장이 없다.

finalize 메소드가 오버라이딩되어 있으면 GC가 이루어질 때 바로 Garbage Collecting이 되지 않아 OOME(Out of Memory Exception)이 발생할 위험이 있다.