1. 최종 수정
Final에 의해 수정 된 클래스는 상속받을 수 없으므로 최종 클래스의 멤버 메소드를 덮어 쓸 수 없으며 최종 키워드로 수정 된 클래스에는 하위 클래스가 없으므로 클래스의 구현 세부 사항을 변경할 수 없으며 확장 할 수 없습니다. 최종 클래스의 모든 멤버 메소드는 최종 방법으로 암시 적으로 지정되며 최종 클래스의 멤버 변수는 필요에 따라 최종적으로 설정할 수 있습니다.
2. 최종 수정 방법
클래스의 메소드가 최종 키워드에 의해 수정되면 하위 클래스는 메소드를 덮어 쓰일 수 없으며 서브 클래스에 의해서만 상속 될 수 있습니다. 상위 클래스의 메소드가 하위 클래스로 덮어 쓰기를 원하지 않으면 메소드를 최종 유형으로 정의 할 수 있습니다. 또한, 부모 클래스의 개인 메소드 (즉, 개인 키워드로 수정 된 메소드)는 서브 클래스에 의해 덮어 쓰는 것이 허용되지 않습니다. 따라서 상위 클래스의 개인 키워드에 의해 수정 된 메소드는 최종 유형의 기본값입니다. 최종 키워드로 수정 된 메소드에는 다음과 같은 특성이 있습니다.
이 방법은 잠겨있어 상속 클래스가 의미와 구현을 수정하는 것을 방지합니다.
효율적인. 컴파일러가 최종 방법을 호출하는 경우 임베디드 메커니즘에 들어가 실행 효율성을 크게 향상시킵니다.
또한, 최종 수정을 사용하는 정적 방법은 자신이 속한 클래스의 서브 클래스에 숨길 수 없습니다.
3. 최종 수정 변수
키워드 결승의 의미는 "이것은 대체 할 수 없다"또는 "최종 상태"입니다.
그렇다면 왜 변화를 중단합니까?
Java 언어의 발명가는 두 가지 목적으로 인해 변화를 방지 할 수 있습니다.
A. 효율성 문제 :
JDK의 특정 클래스의 특정 방법은 사용자가 덮어 쓸 수 없습니다. 설계자는 사용 된 방법이 최상의 방법이라고 생각할 수 있습니다.
사용자가 개인적으로 다루거나 과실로 인해 커버하는 경우 JVM 또는 시스템의 시스템 기능에 영향을 미칩니다.
B. 설계 요구 사항 :
우리 모두 알다시피, 어떤 경우에는이 방법에서 익명 내부 클래스를 전달하는 매개 변수와 같은 최종 키워드를 사용해야합니다.
어떤 사람들은 과제 후 최종 변수가 불변이라고 말합니다.
그렇다면이 미혼은 정확히 무엇을 의미합니까?
이 불변량은 참조, 주소 및 참조 된 객체의 내용을 여전히 변이합니다.
즉,이 최종 변수는 항상 물체를 가리키며 상수에 대한 포인터가 아니라 일정한 포인터입니다.
(1) 최종 키워드로 수정 된 기본 데이터 유형은 초기화되면 변경할 수 없습니다.
(2) 참조 유형의 변수 인 경우 초기 객체를 초기화 한 후에 다른 객체를 가리킬 수는 없지만 참조에 의해 지적 된 객체의 내용은 변경 될 수 있습니다. 그 이유는 참조 데이터 유형의 힙 메모리에 저장된 기준 객체의 주소입니다. 최종은 기준 유형을 수정 한 후, 참조에 의해 지적 된 힙 메모리 공간 (또는 참조에 저장된 힙 메모리 주소)을 변경할 수 없습니다.
클래스의 비 정적 멤버 변수를 수정하기 위해 Final을 사용하는 경우 멤버 변수를 초기화하는 두 가지 방법이 있습니다.
(3) 선언 중에 초기화 (4) 변수를 선언 할 때 초기화합니다. 변수를 Blank Final, 즉 Final Blank라고하지만 초기 값은 변수가있는 클래스의 모든 생성자 에서이 변수에 할당되어야합니다.
클래스의 정적 멤버 변수를 수정하기 위해 Final을 사용하면 정적 멤버 변수를 초기화하는 두 가지 방법이 있습니다.
(5) (6) 인터페이스의 정적 변수를 최종 수정할 때 정적 초기화 블록에서 초기화 할 때 초기화하면 초기화하는 한 가지 방법 만 있습니다.
(7) 선언 할 때 초기화. Final을 사용하여 로컬 멤버 변수를 수정하는 경우 사용하기 전에 할당이 초기화되도록해야합니다.
요컨대, 최종 키워드로 수정 된 변수는 선언시 초기화 할 수 없지만 사용하기 전에 변수가 초기화되도록해야합니다. 초기화되고 할당되면 재 할당 할 수 없습니다. 프로그램의 출력 결과를 분석하십시오.
공개 클래스 테스트 {public static void main (String [] args) {문자열 a = "hello2"; 최종 문자열 b = "hello"; 문자열 d = "hello"; 문자열 c = b + 2; 문자열 e = d + 2; System.out.println ((A == C)); System.out.println ((a == e)); }} 4. 최종 수정 매개 변수
메소드 매개 변수가 최종 유형 인 경우이 매개 변수를 읽고 사용할 수 있지만 매개 변수의 값을 변경할 수는 없습니다. 이 변수는 메소드가 호출되고 해당 매개 변수 값으로 초기화 될 때 생성됩니다. 방법 본체가 실행되기 전에 값을 변경할 수 없습니다. 최종 키워드로 수정 된 기본 데이터 유형의 매개 변수 값을 변경할 수 없습니다. 최종 키워드로 수정 된 참조 데이터 유형은 다른 객체를 가리키거나 다시 NULL에 값을 할당하는 참조가 될 수는 없지만이 참조를 사용하여 참조 객체의 내용을 변경할 수 있습니다. 파라미터를 수정하기위한 최종의 목적은 매개 변수의 작동이 호출 된 메소드 내에서 해당 변수의 값을 변경하는 것을 방지하는 것이 아니라 메소드 내에서 매개 변수의 재 할당 조작을 방지하여 매개 변수가 전달 될 때 초기 값에 영향을 미칩니다. 또한, 최종 키워드로 메소드에서 매개 변수를 수정하면 메소드 외부에서 전달 된 매개 변수 값의 내용이 변경되는 것을 방지 할 수 없습니다. 자세한 내용은 최종 수정 참조 데이터 유형의 설명을 참조하십시오.