2009-08-28 3 views

답변

8

예, 인터페이스를 사용하십시오. 인터페이스는 기본적으로 "이봐 요, 당신은이 멤버들을 구현해야합니다. 그렇지 않으면 컴파일하지 않을 것입니다."라는 계약서입니다.

+0

고마워요. 제가 의식적 이었음을 알게되어 기쁩니다 :-) – Wondering

-1

실제로 이러한 개념은 서로 비교되지 않습니다.

+0

설명해 주실 수 있습니까? – Wondering

+0

당신은 유효한 지적을 가지고 있을지 모르지만, 적어도 약간의 설명이 없으면 이런 종류의 대답은 도움이되지 못합니다. 그것도 적어도 조금 잘못되었습니다 (상속과 인터페이스는 분명히 관련되어 있습니다 - 적어도 질문의 관점에서). – Murph

+0

당신 말이 맞아요. 나는 더 명확해질 수 있었다. 나는이 개념이 상호 배타적이지 않다는 것을 의미했다. 예를 들어 캡슐화와 상속을 둘 다 가질 수 있습니다. 이제 질문을 잘못 이해 한 것을 알았습니다. 나는 OP가 사용할 것을 요구하고 있었지만. 나는 그것이 시험 문제라는 것을 알지 못했다. 혼란을 드려 죄송합니다. – erelender

3

인터페이스를 사용하면 클래스에 모든 메서드에 대한 메서드 스텁이 있는지 확인하지만 구현되지 않을 수 있으며 NotImplementedExceptions을 throw 할 수 있습니다.

모든 메서드가 구현되도록하는 더 좋은 방법은 메서드가 실제로 수행해야하는 작업을 확인하는 단위 테스트를 사용하는 것입니다.

+0

"단위 테스트 사용"이란 문제는 질문이 나오는 맥락에 의존한다는 것입니다. "모든 방법을 구현 했습니까?"라고 질문하면 아마도 그렇습니다. 반면에, "당신이 '이'를 구현하는 누군가가 필요한 모든 방법을 제공했는지 확인하기를 원한다면, 그것은 상당히 다른 문제입니다. – Murph

4

인터페이스 또는 추상 클래스로 원하는 것을 성취 할 수 있습니다. 추상 클래스에서 methodabstract으로 표시된 경우 파생 클래스에서 구현해야합니다. 이 질문은 실제로 사용해야 할 질문으로 이어집니다. 인터페이스 또는 추상 클래스.

빠른 답변 (그리고 나는 빠르고 더러운 것입니다)은 클래스간에 계약적인 동작을 설정하려고 할 때 인터페이스를 사용해야한다는 것입니다. 파생 클래스 집합에 일부 공유 동작이있는 경우 추상 클래스를 사용해야합니다.

관련 문제