> Java > java지도 시간 > Java final 키워드에 대해 얼마나 알고 계시나요?

Java final 키워드에 대해 얼마나 알고 계시나요?

坏嘻嘻
풀어 주다: 2018-09-14 10:35:12
원래의
1439명이 탐색했습니다.

초보자에게 Tomcat은 JSP와 Servlet을 실행하기에 매우 좋은 선택입니다. Resin을 사용할 수도 있는데 둘 다 비용이 전혀 들지 않습니다. Xml에 대한 Resin의 지원은 매우 좋습니다.

1. 기본 데이터 멤버의 final 수정

final의 주요 목적은 C/C++의 const와 동일합니다. 즉, 멤버를 상수로 수정하므로 수정할 수 없습니다. 예를 들어 java.lang.Math 클래스의 PI와 E는 최종 멤버이며 해당 값은 3.141592653589793 및 2.718281828459045입니다.

2. 클래스나 객체의 참조 최종 수정

Java에서는 객체를 최종으로 수정할 수 없고 객체의 참조만 수정할 수 있으므로 public final A를 작성하더라도 마찬가지입니다. a = new A() ; 사실 a가 가리키는 객체의 데이터는 여전히 수정될 수 있습니다. 수정할 수 없는 것은 a 자체의 참조 값입니다. 즉, a를 재할당할 수 없습니다. public final int[] a = {1, 2, 3, 4, 5}와 같은 배열에서도 동일한 상황이 발생합니다. 실제로 a의 값은 수정 가능합니다. 즉, a[0] = 3이라고 쓸 수 있습니다. . 현재 이해에 따르면 Java 배열의 데이터는 수정 불가능하도록 수정할 수 없지만 C/C++에서는 가능합니다.

3. 수정된 메소드의 마지막

수정된 메소드의 마지막은 C/C++에서 멤버 객체를 수정하는 const와 매우 다릅니다. 우선 수정된 메서드의 최종 의미는 "수정 불가능"이 아니라 상속된 멤버가 메서드를 재정의할 수 없다는 의미입니다. (여기서 재정의할 수 없다고 말하는 것은 하위 클래스가 동일한 이름을 가진 메서드를 정의해서는 안 된다는 의미는 아닙니다. 상위 클래스의 메서드가 비공개 유형인 경우 하위 클래스가 메서드를 정의할 수 있습니다. 여기서 의미하는 것은 다음과 같습니다. 메서드를 다시 작성하면 메서드 재정의의 다형성이 실현될 수 있습니다. A a = new B() a.f();

public class A {
    // final方法f
    public final void f() {
       System.out.println("类A中的final方法f被调用了");
    }
}
public class B extends A {
    // 编译错误!父类的f方法是final类型,不可重写!
    //! public void f() {
    //!     System.out.println("类B中的方法f被调用了");
    //! }
}
로그인 후 복사

또한 메소드를 최종 메소드로 수정하면 컴파일러가 메소드를 인라인으로 로드할 수도 있다는 의미입니다. 소위 인라인 메소드는 컴파일러가 평소와 같은 방식으로 메소드를 호출하지 않는다는 의미입니다. 함수를 호출하지만 이를 직접 로드합니다. 특정 수정 후 메서드 내의 코드가 원본 코드에 복사됩니다(메서드 호출을 수행하는 대신 메서드 본문이 호출 사이트에 직접 삽입됨). 이렇게 하면 int[] arr = new int[3]에서 arr.length()를 호출하는 등 코드 실행 속도가 빨라집니다(함수 호출의 오버헤드가 생략되기 때문).

반면, 프라이빗 메서드도 컴파일러에 의해 암묵적으로 최종으로 수정됩니다. 이는 프라이빗 최종 void f()와 프라이빗 void f() 사이에 차이가 없음을 의미합니다.

4. 클래스의 최종 수정

클래스를 최종으로 수정하면 그 의미가 매우 명확해집니다. 즉, 클래스를 상속할 수 없다는 뜻입니다. 이를 상속하는 모든 작업은 컴파일 오류로 종료됩니다. 이는 또한 Java가 식별자로 const 대신 final을 사용하는 이유를 강조합니다. (멤버 변수는 최종이 아닐 수 있으며, 멤버 메소드는 바로 최종입니다)

                                                          using using using using                 out through'''''''''‐ ‐ 바로 통과'  ‐  ‐ ‐ 아웃'이 최종입니다. 개체 변수에는 해당 참조가 전달되는 것으로 생각되며, 이는 호출 프로세스 중에 의도하지 않은 변경을 방지하기 위해 수정됩니다.

관련 권장사항:

JAVA/JSP 학습 시리즈 3_php 기본

JAVA/JSP 학습 시리즈 1_php 기본

위 내용은 Java final 키워드에 대해 얼마나 알고 계시나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿