Java final 수식자 지식 요약 (필수)

3303 단어 final수식자
final은 글자상으로'마지막, 최종적'이라는 의미를 이해한다.Java에서도 마찬가지입니다.
final은 변수(클래스 속성, 대상 속성, 국부 변수와 형삼 포함), 방법(클래스 방법과 대상 방법 포함)과 클래스를 수식할 수 있다.
1. final 코스메틱 클래스:
final 수식류는 이런 것들이 이미'마지막, 마지막'의 의미임을 나타낸다.따라서final로 수식된 클래스는 계승될 수 없고, 자신의 하위 클래스를 가질 수 없다.
보기가final로 수식된 클래스를 계승하면 컴파일하는 동안 오류가 발생합니다.
2. final 손질 방법:
final 수식 방법은 이 방법이 이미'마지막, 마지막'의 의미임을 나타낸다. 즉, 이 방법은 다시 쓸 수 없다는 것이다. (여러 개의final 수식을 다시 불러올 수 있는 방법)
여기서 주의해야 할 점은 다시 쓰는 전제 조건은 하위 클래스가 상위 클래스에서 이 방법을 중계할 수 있기 때문이다. 만약에 상위 클래스에서final 수식적인 방법이 동시에 접근 제어 권한이private라면,
하위 클래스에서 이 방법을 직접 계승할 수 없기 때문에 하위 클래스에서 같은 방법명과 파라미터를 정의할 수 있습니다. 이 때 다시 쓰기와final의 모순이 발생하지 않고
하위 클래스에서 새로운 방법을 재정의했습니다.

public class B extends A {

  public static void main(String[] args) {

  }

  public void getName() {
    
  }
}

class A {

  /**
   *  private , , , getName 、
   *  , 
   */
  private final void getName() {
    
  }

  /*  pblic , , final , 
  public final void getName() {
  
  }
  */
}
3. final 손질 변수:
final 수식의 변수는 이 변수가'마지막, 마지막'의 의미임을 나타낸다.final 변수를 정의하고 디스플레이를 초기화한 후,final 수식의 변수 값은 변경할 수 없습니다.
다음과 같은 몇 가지 문제에 주의해야 합니다.
1.final 수식의 변수는 클래스 속성, 대상 속성, 형삼 변수든 국부 변수든 모두 디스플레이 초기화를 해야 한다(즉 디스플레이에 초기 값을 지정한다).
final 수식의 형삼은 실삼이 전해준 것이기 때문에 이해하기 쉽다.
final 수식의 국부 변수는 final 수식이 없는 변수와 마찬가지로 초기화를 표시해야 합니다.즉 국부 변수는 초기화를 표시해야 한다.
일반적인 클래스 속성과 대상 속성에 대해 클래스와 대상의 초기화 과정에서 알 수 있듯이 먼저 기본 초기화를 실시했다.그리고 디스플레이 값이 있는 변수를 다시 초기화합니다.
그러나 final 수식의 클래스 속성과 대상 속성에 대해 초기화를 표시하지 않으면 기본 초기화를 한 후의 값이 기본값으로 되어 final 자체의 출발점과 모순되기 때문에 자바 문법은 다음과 같이 규정한다.
final 수식의 클래스 속성과 변수 속성은 초기화 값을 표시해야 합니다.
또한 기본 데이터 형식이든 인용 데이터 형식이든final 수식 변수는 초기화 후 값을 수정할 수 없습니다.기본 데이터 유형은 이해하기 쉽다.참조
데이터 형식, 인용 변수는 실제 대상을 가리키지만 그 저장소는 가리키는 대상의 주소이기 때문에 그 값을 수정할 수 없다는 것은 가리키는 대상이 수정할 수 없다는 것을 의미하지 않는다.
4. final 변수 손질 후 발생하는 매크로 교체/매크로 변수 문제
자바에서 매크로 변수/매크로 교체는 자바 코드에서 컴파일된 기간에 일부 변수가 그 자체의 값으로 직접 교체되어 컴파일되는 것을 가리킨다.class 파일에서그래서 번역 후의.class 파일에 이 변화가 존재하지 않습니다.
String 유형의 변수에서는 다음과 같은 경우가 종종 있습니다.
 

public class Test {

  public static void main(String[] args) {

    String country = "China";
    String name = "qqyumidi";

    String userInfo = country + name; // country name 
    String user = "China" + "qqyumidi"; // Chinaqqyumidi

  }
}
상기 코드의 아홉 번째 줄에서 컴파일된 변수의 결과는 바로 Chinaqqyumidi입니다.8행 코드에서country와name는 모두 일반적인 변수이기 때문에 컴파일러가 컴파일할 때userInfo의 값을 직접 확정할 수 없기 때문에
이곳을 번역한 결과 결과는 직접적으로 Chinaqqyumidi가 아니다.
그러나 8줄의 코드가 컴파일러에서 Chinaqqyumidi로 직접 표시되기를 원한다면,final 수식자로country와name 변수를 수식해야 한다.
원인:final 수식자 수식의 변수는 그 자체의 특성 때문에 컴파일러에서 그 값을 직접 확정할 수 있고 이 값은 변할 수 없습니다.번역 과정에서 그 변수를 직접 그 값 자체로 바꾸어 표시할 수 있다.

public class Test {

  public static void main(String[] args) {

    final String country = "China";
    final String name = "qqyumidi";

    String userInfo = country + name; // Chianqqyumidi

  }
}
지금까지 여러분에게 가져온 Java final 수식자 지식점 총결산(본편)의 모든 내용입니다. 여러분에게 도움이 되고 많은 응원 부탁드립니다~

좋은 웹페이지 즐겨찾기