final 키워드 재인식

1508 단어
자바를 배운 지 오래되었습니다. 오늘final 키워드를 다시 봤는데 사실 자신이 파악한 것이 전면적이지 않다는 것을 발견했습니다. 다음은 이 키워드가 어디에 쓰이는지 살펴보겠습니다.
1.final 수식 데이터: 기본 형식의 데이터에 대해final은 그 수치를 변하지 않게 하고 대상 유형의 인용에 대해final은 인용을 변하지 않게 한다. 이 말은 인용의 대상에 대해final은 이 대상이 가리키는 주소를 바꿀 수 없지만 주소의 값은 바꿀 수 있다는 뜻이다.
이 말에 대해 우리는 프로그램으로 검증할 수 있다.
public class Test{
	int i=9;
}

4
public class Test1 {
	
	public static void main(String[] args){
		final Test test = new Test();
		//test = new Test1();
		test.i = 3;
		System.out.println(test.i);
	}
}
출력된 i의 값이 변경되었음을 알 수 있지만 코드test=new Test1()을 작성하면컴파일러가 오류를 보고해서final 수식의 변수를 바꿀 수 없다고 알려 줍니다.
이렇게 하면 대상 테스트의 주소는 변하지 않았지만 값은 바뀌었다는 것을 알 수 있다.
2. 공백final: 이른바 공백final은final 형식으로 성명되었지만 초기의 값을 정하지 않았기 때문에 프로그램이final을 사용할 때 유연성이 많아졌다. 즉, 스스로 초기화할 수 있다. 그러나 이런 변수는 일반 변수 컴파일러가 클래스 변수에 초기의 값을 주지 않는다. 그는 사용자를 통해 변수의 초기 값을 지정한다.3. final 매개 변수: 매개 변수가 가리키는 대상을 방법에서 변경할 수 없습니다.마찬가지로 객체의 멤버 변수도 변경할 수 있습니다.
4.final 방법: 다시 쓸 수 있지만 다시 불러올 수 없습니다.final 수식 방법은 방법 잠금을 말해서 상속류가 그의 의미를 수정하지 않도록 하고 계승에서 방법을 변하지 않게 한다.
final 수식을 사용하는 두 번째 이유는 효율이다.만약 방법을final 형식으로 가리킨다면, 이 방법에 대한 모든 호출을 내장 호출로 같이 전환합니다.컴파일러가final 형식의 방법을 발견할 때, 그는 프로그램 코드를 삽입하는 정상적인 방법을 건너뛰고 실행 방법 호출 메커니즘을 사용합니다.또한 방법체 중의 실제 코드의 사본으로 방법 호출을 대체합니다.이것은 방법이 호출되는 비용을 없앴다. (특히 순환할 때)
5.final 클래스: 클래스를 final 유형으로 성명하면 클래스를 계승하지 않을 뿐만 아니라 다른 사람이 이렇게 하는 것도 허락하지 않는다는 것을 의미한다.final류는 상속을 금지하기 때문에 이것은final류의 모든 방법을final로 은밀하게 제정하는 것과 같다. 왜냐하면 당신은 그를 다시 불러올 수 없기 때문이다.

좋은 웹페이지 즐겨찾기