마지막은 문자 그대로 "마지막, 최종"을 의미합니다. 이 의미는 자바로도 표현됩니다.
Final은 변수 (클래스 속성, 객체 속성, 로컬 변수 및 공식 매개 변수 포함), 메소드 (클래스 메소드 및 객체 방법 포함) 및 클래스를 수정하는 데 사용할 수 있습니다.
1. 최종 수정 클래스 :
최종 수정 클래스는이 클래스가 이미 "마지막, 최종"의미를 가지고 있음을 의미합니다. 따라서 Final으로 수정 된 클래스는 상속받을 수 없습니다. 즉, 자체 서브 클래스를 가질 수 없습니다.
보기가 최종으로 수정 된 클래스를 상속하면 컴파일 중에 오류가 발생할 수 있습니다.
2. 최종 수정 방법 :
최종 수정 방법은이 방법에 이미 "마지막, 최종"의미, 즉이 방법을 다시 작성할 수 없음을 의미합니다 (다중 최종 수정 방법을 과부하 할 수 있음).
여기서 주목해야 할 것은, 덮개를 제시하기위한 전제 조건은 서브 클래스가 부모 클래스 에서이 메소드를 상속 할 수 있다는 것입니다. 부모 클래스의 최종 수정 된 메소드에도 액세스 제어 권한이 비공개 인 경우.
이 방법은 서브 클래스에서 직접 상속받을 수 없습니다. 따라서 현재 서브 클래스에서 동일한 메소드 이름과 매개 변수를 정의 할 수 있습니다. 현재 재 작성과 최종 사이에는 모순이 없을 것입니다.
서브 클래스로 새로운 방법이 재정의되었습니다.
Public Class B는 {public static void main (string [] args) {} public void getName () {}} 클래스 A { /***를 개인 수정으로 인해 서브 클래스에 상속받을 수 없습니다. 따라서 서브 클래스의 getName 메소드는 재정의되어 있으며, *는 서브 클래스 자체에 속하며, 컴파일은 정상 */private final void getName () {}/ *입니다. pblic 수정으로 인해 서브 클래스는이 메소드를 상속받을 수 있으며, 부모 클래스의 최종 방법을 다시 작성할 수 있습니다.3. 최종 변수 수정 :
최종 수정 변수는이 변수에 "마지막, 최종"의미가 있음을 의미합니다. 최종 변수가 처음으로 정의되고 초기화되면 최종 수정 된 변수 값을 변경할 수 없습니다.
다음은 언급해야 할 몇 가지 문제입니다.
1. 최종 수정 된 변수는 클래스 속성, 객체 속성, 공식 매개 변수 또는 로컬 변수이든 이러한 변수를 초기화해야합니다 (즉, 디스플레이의 초기 값을 지정).
Final에 의해 수정 된 공식 매개 변수의 경우 실제 매개 변수에 의해 전달되기 때문에 이해하기 쉽습니다.
최종적으로 수정되지 않은 변수와 동일한 최종적으로 수정 된 로컬 변수의 경우 초기화를 표시해야합니다. 즉, 로컬 변수를 초기화해야합니다.
일반 클래스 속성 및 객체 속성의 경우 클래스 및 객체의 초기화 프로세스에서 기본 초기화가 처음 수행되는 것을 볼 수 있습니다. 그런 다음 할당이 표시된 변수가 다시 초기화됩니다.
그러나 최종적으로 수정 된 클래스 속성 및 객체 속성의 경우 초기화가 표시되지 않으면 기본값은 기본 초기화 값이므로 최종 자체의 시작점과 모순됩니다. 따라서 Java Syntax는 다음과 같습니다.
최종적으로 수정 된 클래스 속성 및 변수 속성은 표시되고 초기화되어야합니다.
또한 기본 데이터 유형이든 참조 데이터 유형의 경우 최종 수정 된 변수가 처음으로 표시되며 초기화 후에는 수정할 수 없습니다. 기본 데이터 유형에 대해 이해하기 쉽습니다. 참조
데이터 유형, 참조 변수는 실제 객체를 가리키지 만 가리키는 객체의 주소를 저장합니다. 따라서 그 값을 수정할 수 없다고해서 지적 된 객체를 수정할 수 없다는 것을 의미하지는 않습니다.
4. "매크로 교체"/"매크로 변수"최종 수정으로 인한 문제
Java에서 매크로 변수/매크로 교체는 Java 코드에서 일부 변수는 컴파일 기간 동안 자체 값으로 직접 대체하고 .class 파일로 컴파일 될 수 있다는 사실을 나타냅니다. 따라서이 변경은 더 이상 컴파일 된 .class 파일에 존재하지 않습니다.
유형 문자열 변수에서 때때로 다음 상황이 종종 발생합니다.
공개 클래스 테스트 {public static void main (String [] args) {String Country = "China"; 문자열 이름 = "qqyumidi"; 문자열 userInfo = Country + 이름; // 컴파일 후, 국가와 이름 변수는 여전히 여기에 있습니다. String user = "China" + "qqyumidi"; // 컴파일 후, 그것은 chinaqqyumidi 직접}}가됩니다.위의 코드의 9 행에서 컴파일 된 변수 결과는 직접 ChinaQQYUMIDI입니다. 8 행에서 국가와 이름은 일반 변수이므로 컴파일러는 컴파일 타임에 사용자 인증의 값을 직접 결정할 수 없습니다.
여기에서 편집 한 결과는 직접적으로 ChinaQQYUMIDI가 아닙니다.
그러나 편집 기간 동안 8 행의 코드를 ChinaQQYUMIDI로 직접 표시하려면 최종 수정자를 사용하여 국가 및 이름 변수를 수정해야합니다.
이유 : 최종 수정 자에 의해 수정 된 변수는 자체 특성으로 인해 컴파일 기간 동안 값을 직접 결정할 수 있으며이 값은 변경할 수 없습니다. 컴파일 프로세스 중에 변수는 표현을 위해 값으로 직접 변환 될 수 있습니다.
공개 클래스 테스트 {public static void main (String [] args) {Final String Country = "China"; 최종 문자열 이름 = "Qqyumidi"; 문자열 userInfo = Country + 이름; // 컴파일 후 직접 chianqqyumidi}}입니다.위는 편집자가 제공하는 Java Final Modifier Knowledge Points (Must-Read Article)의 전체 내용입니다. 나는 그것이 당신에게 도움이되기를 바랍니다.