Java 클래스 final
에서이 메소드를 대체 할 수 없음을 표시 하기 위해 메소드를로 정의 할 수 있습니다 .
public class Thingy {
public Thingy() { ... }
public int operationA() {...}
/** this method does @return That and is final. */
public final int getThat() { ...}
}
분명합니다. 우연한 재정의 또는 성능 저하로부터 보호하는 데 유용 할 수 있습니다. 그러나 그것은 제 질문이 아닙니다.
내 질문은 : OOP 관점 final
에서 클래스 디자이너 가 메소드를 정의 함으로써이 메소드가 항상 설명 된대로 또는 암시 적으로 작동 할 것이라고 약속 했습니다. 그러나 종종 방법이 수행하는 것이 더 복잡하고 속성을 제공하는 것보다 복잡한 경우 클래스 작성자의 영향을받지 않을 수 있습니다 .
구문상의 제약은 나에게 분명하지만 OOP의 의미는 무엇입니까? 되어 final
대부분의 클래스 저자에 의해 이러한 의미에서 올바르게 사용?
방법은 어떤 종류의 "계약"을 final
약속합니까?