2014-03-04 4 views
5

documentation page of interfaces on dlang.org에 인터페이스는 최종 메소드를 구현해야한다고 말합니다. 최종 방법은 무엇입니까? 키워드가 다른 페이지에서 언급되지 않은 것 같습니다.'최종'키워드는 무엇을 의미합니까?

내가 찾은 것이 this page이지만, 고대 D1에서 남아있는 것으로 보입니다.

최종 함수는 단순히 불변 결과를 반환하는 함수입니까? 키워드가 아직 존재합니까?

답변

4

최종 함수는 하위 클래스 (가상 함수의 반대)에서 재정의 할 수없는 함수입니다.

모든 템플릿은 최종 템플릿이므로 인터페이스의 템플릿에는 기능 본문이 있어야합니다. 그렇지 않으면 링커 오류가 발생합니다. Virtual Functions에서

11

: 그들은 private도하지 않는 한 final로 표시

기능은 파생 클래스에서 재정의 할 수 없습니다. 옆에

+0

그것을 구현할 수 - 누구나 설명 할 수있어? 어떻게 파생 클래스에서 개인 최종 메서드를 재정의 할 수 있습니까? –

+0

@Sebastian 문구가 약간 틀린 것 같아요. 전용 함수는 파생되지 않으므로 여기서 "재정의 됨"은 동일한 이름의 파생 클래스에 함수가 있음을 의미합니다. 이 두 함수는 서로 연결되어 있지 않으므로 'final'한정자는 적용되지 않습니다. – OdraEncoded

3

어떤 다른 답변이 말했다 : ". 그들은`도 private`하지 않는 한"

인터페이스가 최종 기능을 지정하고 직접

interface Foo{ 
    int bar(); 

    final int doublefoobar(){ 
     return bar()*2; 
    } 
}