테스트를 실시하고 질문이 하나 있습니다. 질문 : 모든 방법과 속성이 구현되었는지 확인하려면 무엇을 사용합니까? a) 상속. b) 다형성. c) 캡슐화 d) 인터페이스.모든 메서드와 속성이 구현되도록하려면 무엇을 사용합니까?
나는 그것의 인터페이스라고 생각합니다. 내가 맞습니까? ans는 diff입니까?
테스트를 실시하고 질문이 하나 있습니다. 질문 : 모든 방법과 속성이 구현되었는지 확인하려면 무엇을 사용합니까? a) 상속. b) 다형성. c) 캡슐화 d) 인터페이스.모든 메서드와 속성이 구현되도록하려면 무엇을 사용합니까?
나는 그것의 인터페이스라고 생각합니다. 내가 맞습니까? ans는 diff입니까?
예, 인터페이스를 사용하십시오. 인터페이스는 기본적으로 "이봐 요, 당신은이 멤버들을 구현해야합니다. 그렇지 않으면 컴파일하지 않을 것입니다."라는 계약서입니다.
실제로 이러한 개념은 서로 비교되지 않습니다.
설명해 주실 수 있습니까? – Wondering
당신은 유효한 지적을 가지고 있을지 모르지만, 적어도 약간의 설명이 없으면 이런 종류의 대답은 도움이되지 못합니다. 그것도 적어도 조금 잘못되었습니다 (상속과 인터페이스는 분명히 관련되어 있습니다 - 적어도 질문의 관점에서). – Murph
당신 말이 맞아요. 나는 더 명확해질 수 있었다. 나는이 개념이 상호 배타적이지 않다는 것을 의미했다. 예를 들어 캡슐화와 상속을 둘 다 가질 수 있습니다. 이제 질문을 잘못 이해 한 것을 알았습니다. 나는 OP가 사용할 것을 요구하고 있었지만. 나는 그것이 시험 문제라는 것을 알지 못했다. 혼란을 드려 죄송합니다. – erelender
인터페이스를 사용하면 클래스에 모든 메서드에 대한 메서드 스텁이 있는지 확인하지만 구현되지 않을 수 있으며 NotImplementedExceptions을 throw 할 수 있습니다.
모든 메서드가 구현되도록하는 더 좋은 방법은 메서드가 실제로 수행해야하는 작업을 확인하는 단위 테스트를 사용하는 것입니다.
"단위 테스트 사용"이란 문제는 질문이 나오는 맥락에 의존한다는 것입니다. "모든 방법을 구현 했습니까?"라고 질문하면 아마도 그렇습니다. 반면에, "당신이 '이'를 구현하는 누군가가 필요한 모든 방법을 제공했는지 확인하기를 원한다면, 그것은 상당히 다른 문제입니다. – Murph
인터페이스 또는 추상 클래스로 원하는 것을 성취 할 수 있습니다. 추상 클래스에서 method
이 abstract
으로 표시된 경우 파생 클래스에서 구현해야합니다. 이 질문은 실제로 사용해야 할 질문으로 이어집니다. 인터페이스 또는 추상 클래스.
빠른 답변 (그리고 나는 빠르고 더러운 것입니다)은 클래스간에 계약적인 동작을 설정하려고 할 때 인터페이스를 사용해야한다는 것입니다. 파생 클래스 집합에 일부 공유 동작이있는 경우 추상 클래스를 사용해야합니다.
고마워요. 제가 의식적 이었음을 알게되어 기쁩니다 :-) – Wondering