2013-01-23 5 views
1

내가 호출 할 필요가 있다고 부모의 finalize()하여 finalize() method.But 생성자가 자동으로 호출 무시 슈퍼에서 finalize() 메서드와 다른 클래스 생성자입니다.finalize()가 자동으로 부모의 finalize()를 java의 생성자와 같이 호출하지 않는 이유는 무엇입니까? 나는 objects.But 누군가의 메모리 공간을 다시 주장하면서 몇 가지 작업을 수행 할 <code>finalize()</code> 메소드를 오버라이드 (override)가

나에게 뭔가를 가르쳐 주시겠습니까? ...?

+0

은 추력을 만족하기에 충분해야 .. http://howtodoinjava.com/2012/ 10/31/why-not-to-use-final-method-in-java/ – lokesh

+1

또한 가치가있는 읽을 거리 : http://stackoverflow.com/questions/158174/why-would-youever_implement-finalize – assylias

답변

8

IT는 Java Language Specification #12.6 (강조 광산)에서 그런 식으로 정의된다 : Object 클래스에 선언

finalize 메소드는 아무런 조치도 취하지 않습니다. Object 클래스가 finalize 메서드를 선언한다는 사실은 모든 클래스의 finalize 메서드가 항상 해당 수퍼 클래스의 finalize 메서드를 호출 할 수 있음을 의미합니다. 수퍼 클래스에서 파이널 라이저의 동작을 무효화하려는 프로그래머의 의도가 아니라면 항상이 작업을 수행해야합니다. (생성자와 달리, 파이 나라가 자동으로 슈퍼 클래스의 종료자를 호출하지 않습니다. 이러한 호출이 명시 적으로 코딩해야합니다를)

+0

+ 1 finalize()는 메소드이기 때문에 메소드는 기본적으로 수퍼 클래스의 구현을 호출하지 않습니다. 감안할 때 특별한 행동을 추가하는 것이 좋은 아이디어 일 가능성은 희박합니다. –