(1) 최종 : 수정 자 (키워드). 클래스가 최종 선언 된 경우 새 하위 클래스를 도출 할 수 없으며 부모 클래스로 상속받을 수 없음을 의미합니다. 따라서 수업은 추상과 최종으로 선언 될 수 없습니다. 변수 또는 방법을 최종으로 선언하면 사용 중에 변경되지 않도록 할 수 있습니다. 최종으로 선언 된 변수는 선언시 초기 값을 가져야하며 향후 참조로만 읽을 수 있으며 수정할 수 없습니다. 최종으로 선언 된 메소드는 또한 만 사용할 수 있으며 과부하 할 수 없습니다.
(2) 마지막으로 : 예외 처리 중에 청산 작업을 수행 할 수 있도록 최종적으로 블록을 제공합니다. 예외가 발생하면 일치하는 캐치 조항이 실행되고 컨트롤이 최종 블록 (있는 경우)에 들어갑니다.
(3) 마무리 : 메소드 이름. Java 기술을 사용하면 최종화 () 메소드를 사용하여 쓰레기 수집기가 메모리에서 객체를 제거하기 전에 필요한 청소를 수행 할 수 있습니다. 이 방법은 객체가 참조되지 않는 것을 결정할 때 쓰레기 수집기에 의해 호출됩니다. 객체 클래스에 정의되므로 모든 클래스가 상속됩니다. 서브 클래스는 시스템 리소스를 구성하거나 다른 청소 작업을 수행하기 위해 Finalize () 메소드를 대체합니다. 가비지 수집기가 삭제하기 전에 최종화 () 메소드가 호출됩니다.
위의 것은 약간 모호 할 수 있습니다. 더 깊이 논의합시다.
1. 다른 속성
(1) 마지막은 키워드입니다.
(2) finalize ()는 방법입니다.
(3) 마침내 시도 문에 사용되는 블록 플래그입니다.
둘째, 기능
(1) Final은 상수를 식별하는 데 사용되는 키워드이며 Final으로 식별 된 키워드는 상수 풀에 저장됩니다 (최종 상수의 특정 사용은 아래에 소개됩니다).
(2) finalize () 메소드는 객체에 정의됩니다. C ++의 소멸자와 유사한 물체가 "사라질 때"물체가 사라질 때 jvm을 호출하는 데 사용됩니다. 사용자가 정의 할 때, 객체가 차지하는 리소스 (예 : I/0 조작 수행)를 해제하는 데 사용됩니다.
(3) 마지막으로 {}는 코드 블록을 식별하고 Try {}와 협력하는 데 사용됩니다. 시도의 코드가 실행되었는지 여부에 관계없이 (예외를 참조) 코드 블록의 프로그램은 확실히 수행됩니다.
3. 자세한 설명
1 변수를 정의합니다
1.1 최종이 기본 유형 변수를 정의하면 변수 초기화를 선언 할 때 또는 생성자에서 다른 장소에서 사용해야합니다. 이 키워드로 정의 된 상수는 초기화 단계를 제외하고는 변경할 수 없습니다.
1.2 Final은 객체에 대한 참조를 정의하며, 참조 초기화는 상수를 정의 할 때 요구 사항과 일치합니다. 키워드로 정의 된 객체의 내용을 변경할 수 있지만 참조로 가리키는 주소는 변경 될 수 없습니다.
2 매개 변수를 정의합니다
이 매개 변수에 의해 정의 된 변수가 전달되면, 메소드는 변수를 정의하기위한 수정 규칙과 동일한 매개 변수 (오류)의 내용을 수정할 수 없습니다. Java 메소드는 Java 메소드에서 기본 유형을 전달할 때 값을 전달하고 Java 메소드는 객체의 매개 변수를 전달합니다. <결국, 메소드는 "사본"을 전달하는 데 의존합니다. 기본 유형의 경우 먼저 사본을 작성하고 복사 할 전달 된 값을 할당 한 다음 사본에서 작동합니다. 객체 유형의 경우 먼저 참조 사본을 작성하고 전달 된 객체 참조를 복사에 할당하십시오.
예 : 메소드 (최종 int 테스트);
일부 책은 여기서 최종 정의 매개 변수, 특히 객체의 매개 변수는 매우 유용하며 메소드 내에서 객체의 내용을 변경할 수 없다고 말합니다. 이 진술은 잘못되었습니다! 또한 이런 식으로 기능적 프로그래밍 특성이 있다고 생각합니다. 객체의 내용을 수정할 수 없습니다. 여기서도 객체의 내용을 수정할 수 있습니다.
? ? 이 매개 변수를 정의하는 사용은 무엇입니까? ?
문자열은 최종적으로 태어났습니다!
3 정의 방법
(1) 최종 키워드를 사용하여 정의 된 방법은 서브 클래스에 의해 상속 될 수 없습니다.
(2) 컴파일러 가이 메소드의 모든 호출을 인라인 (인라인) 동작으로 변환하도록 허용합니다. 즉, 일상적인 메소드 호출을하는 대신 통화 에서이 메소드를 직접 복사 할 수 있습니다 (스택을 저장, 스택을 누르십시오). 그러나 너무 많은 경우 코드 팽만감이 발생하고 효율성에 영향을 미치 므로이 방법은주의해서 사용해야합니다. .
4 정의 클래스
모든 최종 클래스는 누구에게나 상속받을 수 없습니다. 즉,이 클래스는 상속 트리의 리프 클래스 이며이 클래스는 완벽한 것으로 간주되며 수정이 필요하지 않습니다 (즉, 권장되지 않음).