2009-11-01 2 views

답변

12

매우 간단합니다. 구현에만 정의 된 유형은 구현 내에서만 볼 수 있으므로 인터페이스의 인수 또는 반환 값 유형으로 사용할 수 없습니다. 따라서 유형 정의 (다른 것과 마찬가지로 ;-)는 해당 유형이 구현 세부 사항인지 또는 인터페이스를 통해 외부에서 볼 수 있도록할지 여부를 기준으로 배치하십시오.

+0

좋아, 거기에 어떤 오버 헤드 또는 이것에 저장, 또는 그것은 정보 숨기기의 문제입니까? 내가 언급 한 바와 같이 실제로 자주 사용되는 것을 보지 못했습니다. 자주 사용되는 경우가 많습니다. '더 나은 방법'이라면 이상하게 보입니다. – HMcG

+0

@HMcG, 어떤 내재적 인 오버 헤드도 없다 - 나는 당신이 그것을 거의 사용하지 않는다는 것을 왜 보았는지 모르겠다. 아마도 사람들은 그것에 대해 생각하지 않을 것이다. (또는 단지 구현 목적을 위해 특별한 유형이 거의 필요하지 않을 수도있다.) –

+0

이것은 전적으로 범위 문제입니다. 노출 될 필요가있는 것만 노출하십시오. 너 너 뭐야? 내 것은 내 것이다. 우리가 공유하기로 결정하지 않으면. –

5

범위. 인터페이스 선언은 해당 유닛이 Uses 절에 포함될 때 공개되고 다른 유닛에 유용합니다. 구현 선언은 비공개이며 특정 유닛 내에서만 사용할 수 있습니다.

3

컴파일 중 인터페이스 변경 및 코드 변경 구현간에 일반적인 차이가 있습니다. 인터페이스 섹션에 클래스를 추가하거나 기존 클래스를 변경하면 변경된 유닛을 참조하는 모든 유닛을 다시 컴파일해야합니다. 그러나 구현 섹션의 변경 (새로운 하위 클래스 또는 코드 변경)은 해당 유닛의 재 컴파일 만 필요하며 IDE는 이전에 컴파일 된 DCU와 새 모듈을 연결하여 EXE 파일을 만듭니다.

전반적인 주요 이점은 구현 세부 정보를 숨기는 코드를 디자인 할 수 있다는 것입니다. 인터페이스의 상위 클래스와 구현의 하위 클래스를 정의하십시오. 또는 인터페이스 섹션에서 사용할 수있는 클래스/메소드의 행동을 구현하는 데 전적으로 필요한 경우 구현에 클래스를 정의하십시오.

관련 문제