문제

메소드에 최종 키워드를 사용할 수 있습니까?

도움이 되었습니까?

해결책

전적으로! 그만큼 final 키워드는 거의 무엇이든 적용 할 수 있습니다. 각 경우에는 "더 이상 이것을 바꿀 수 없습니다"를 의미합니다.

적용 할 때 의미하는 바는 다음과 같습니다.

변수: 당신은 단순히 변수에 새 값을 할당 할 수 없습니다 (렌더링 끊임없는, 물론이야)

방법:이 메소드를 하위 클래스로 다시 구현할 수 없습니다 (즉, 재정의)

수업: 서브 클래스를 정의 할 수 없습니다

각각의 경우 우리는 단순히 간단하게 표시하고 있습니다.이 일이 선언되면, 이것이 마지막으로 볼 수있는 마지막 값 (또는 구현)입니다.

다른 팁

예, 방법을 다음과 같이 선언 할 수 있습니다. final. 이는 메소드가 서브 클래스로 무시할 수 없음을 의미합니다.

에서 Java 언어 사양, 제 3 판, 섹션 8.4.3.3:

서브 클래스가 재정의 또는 숨기는 것을 방지하기 위해 메소드가 최종적으로 선언 될 수 있습니다. 최종 방법을 재정의하거나 숨기려고 시도하는 것은 컴파일 타임 오류입니다.

자세한 내용은 최종 수업 및 방법 작성 페이지 Java 튜토리얼 더 많은 정보가 있습니다.

예.

메소드를 최종적으로 만들 수 있습니다

public class A {
   public static final void f() {
      System.out.println("test");
   }
}

일반적으로 방법을 최종적으로 만드는 두 가지 이유가 있습니다.

  1. 메소드가 최종이되면 ""가 "상환 될 수 있습니다.
  2. 메소드가 최종이되면 메소드는 재정의가 불가능합니다.

물론 가능합니다. 재정의가 불가능합니다.

물론 확인하십시오 최종 키워드의 마지막 단어

public abstract class AbstractBase
{
    public final void performOperation()    // cannot be overridden
    {
        prepareForOperation();
        doPerformOperation();   
    }

    protected abstract void doPerformOperation();    // must override
}

예.

최종 방법은 서브 클래스로 무시할 수 없습니다. 이것은 종종 서브 클래스가 클래스의 중요한 행동을 변화시키는 것을 방지하는 데 사용됩니다.

다른 답변에 대한 메모로. 너 ~할 수 있다 최종 사용. 실제로 나는 그것을 사용하는 사람들을 거의 보지 못하고 왜 그런지 잘 모르겠습니다.

요즘 내가 쓴 많은 코드는 멀티 스레드 환경을위한 것이며, 클래스를 최종 결승에 불변으로 만들어서 (가치 클래스 인 경우) threadSafe가되도록하는 경향이 있습니다.

일부 방법을 최종 (다른 방법이 아닌)로 표시하는 데있어 문제는 그 방법에 대해 특별한 것이 있고 다른 방법에 대해 특별한 것이 없다는 것을 진술하고 있다는 것입니다. 그것은 사람들이 실제로 내 경험에서 실제로 의미하는 바입니다.

클래스가 내유를 위해 의도 된 경우, 원치 않는 부작용을 방지하기 위해 클래스를 깨끗하게 유지하고 작게 유지해야합니다. 이 모든 것은 자신과 팀에 대한 코드를 작성하는지 여부에 따라 또는 더 많은 청중을 위해 글을 쓰고 있는지, 즉 오픈 소스 프로젝트 또는 상업 프로젝트에 대한 공개 API를 작성하고 있는지에 달려 있습니다.

예, 최종 키워드를 메소드에 사용할 수 있습니다. 불변성을 보존 할 것입니다. 방법이 깨지는 것을 방지합니다. 예를 들어, 클래스 X 메소드의 구현이 메소드 m이 특정 방식으로 작동한다고 가정한다고 가정합니다. X 또는 M을 최종으로 선언하면 파생 클래스가 X가 잘못 행동하는 방식으로 M을 재정의하는 것을 방지합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top