DevBoi

[Java] final,finally,finalize 차이점 본문

Language/[Java]

[Java] final,finally,finalize 차이점

HiSmith 2022. 3. 16. 00:16
반응형

1. Final

 

변수나 참조에 적용 가능하다.

-변수인 경우, 값 변경이, 참조에 적용하면 다른 객체를 가르키는것이 불가하다

-메서드에 적용하면, 해당 메서드를 상속 받는 하위 클래스에서 오버라이딩이 불가하다.(사용은 가능하나, 변경은 불가 )

-클래스에 적용하면, 해당 클래스를 다른 클래스가 상속 받을 수 없다. 즉, final 클래스의 하위 클래스를 정의 할 수 없다.

 

 

2. Finally

Finally는 try-catch 블록 뒤에 둘 수 있는 선택적인 블록인데, try-catch 문이 끝나기 전에 항상 꼭 실행되어야 하는 로직이 있을 경우

finally 절에 두면된다.

예외가 던져지더라도, 항상 실행될 코드를 지정하기 위해 사용된다. finally 블록은 try와 catch 블록이 전부 실행된 후, 제어흐름이 원래지점으로 돌아가기 전에 실행된다.

 

 

3.Finalize

Object 클래스에 선언된 protected 메소드이다. java에서 모든 클래스는 object를 상속한다.

그래서, 모든 객체는 finalize 메소드를 갖고있다.

GC가 참조하는 객체가 없다고 생각되면, 소멸시키는데 소멸시킬때 finalize()메소드를 호출하여, 소멸시킨다.

Finalize를 오버라이드할수 있다. finalize()는 소멸될때 호출이 되기 때문에 어떤 자원을 함께 소멸할 수 있도록 구현할 수 있다.

하지만 호출 시점이 GC에 의존적이기 때문에, 재정의 하지 않는 것을 추천한다.

반응형

'Language > [Java]' 카테고리의 다른 글

[Java] 함수형 프로그래밍  (0) 2022.03.16
Thread와 상태제어 메소드  (0) 2022.03.16
[Java] 제네릭이란?  (0) 2022.03.15
[Java] 직렬화와 역 직렬화  (0) 2022.03.15
[Java] String, String Builder, StringBuffer  (0) 2022.03.15