다중 상속이 필요한 시나리오가 있습니까? 예제를 제공해주십시오.다중 상속이 필요한 시나리오가 있습니까?
답변
개발자가 게으르며 다중 상속을 필요로하지 않는 더 나은 클래스 디자인을 만들고 싶지 않을 때 나는 주로 C#으로 코드를 작성하고 시나리오를 찾지 못했지만 자신의 디자인 만 저주하게 만들었습니다 단일 상속을 허용합니다. 즉, 다중 인터페이스 을 구현할 수 있다는 것은 매우 편리하다는 의미입니다.입니다.
하지만 여러 인터페이스를 사용했을 가능성이 큽니다 (또는 상속과 인터페이스 모두 사용). 하지만 그것은 C++에서 다중 상속이 될 것입니다. 왜냐하면 C++은 인터페이스를 독립적 인 개념으로 갖고 있지 않기 때문입니다. (C++ 개발자는 인터페이스를 구현 된 메소드가없는 클래스로 생각합니다.) –
다른 OOP 언어가 가지고있는 인터페이스와 같은 것을 시뮬레이션하려면 다중 상속을 사용해야합니다. 당신은 튜링 기계보다 더 아무것도 필요 아니 시나리오가 없습니다 자바 나 C#
+1, 정확하게 말하고자하는 것 –
인터페이스가 더 일반적인 다중 상속의 제한된 특수한 경우 (예 : 순수 가상 추상 기본 클래스)를 제외하고. –
요컨대 인터페이스는 구현의 * 계약 *입니다. 클래스 - 상속은 실제 구현입니다. 하나의 구현 상속 (Java, C# 등)으로 언어를 제한하지 않는 한 계약 * 및 * 구현 (순수 가상 + 구현 함수)을 둘 다 가질 수 있습니다. – WhozCraig
순수 추상 클래스를 사용하면, 인터페이스를 가질 수 있습니다.
처럼
상속을 "필요로하며"단일 클래스에서 두 번 이상 사용하거나 단일 클래스에서 결합하려는 것은 "다중 상속이 필요합니다". 상속을 사용
일반적인 C++ 숙어은 다음과 같습니다 : 추상 클래스를 사용하여
- Java 스타일의 인터페이스를 CRTP (http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern), 또는
boost::noncopyable
를 통해 바인딩 시뮬레이션 동적 포함 순수한 가상 함수 - 유지 mixin을 포함. 여러 인터페이스를 구현하는 하나의 클래스가 다음 다중 상속을 필요로 할 경우
- 정책 기반 설계 (http://en.wikipedia.org/wiki/Policy-based_design) 타입의
- 규정은, 그래서
을 할 특성. 정책 기반 반복자 유형을 원하면 다중 상속이 필요합니다 (한 번은 정책의 경우, 한 번은 특성의 경우).
필자는 분명히 모든 경우에 동일한 출력을 가진 프로그램을 작성할 수 있고 다중 상속을 사용하지 않기 때문에 "필 요"을 넣을 수 있습니다 ("튜링 완료는 모두 우리가 신경 쓰고 있습니다"인수). 그러나 Turing의 완전성은 이 아니며입니다. 일반적으로 Turing의 입/출력 프로그램 개념 외에도 소프트웨어 작성에 대한 목표가 있습니다. 우리는 그 근원이 어떻게 생겼는지 관심을 기울입니다. 그러므로 "필요하다".
COM 개체를 작성할 때.
- 1. Perl과 Java의 다중 상속이 동일합니까?
- 2. 트리의 노드에 다중 상속이 허용됩니까?
- 3. 다중 상속이 옵션이 아닌 경우 코드를 재사용하는 방법은 무엇입니까?
- 4. 가상 상속이 "다이아몬드"(다중 상속) 모호성을 어떻게 해결합니까?
- 5. Agile 시나리오가 맞습니까?
- 6. Cucumber in Rails에 대해 부정적인 시나리오가 있습니까?
- 7. 브라우저가 인라인 CSS를 자동으로 추가하는 시나리오가 있습니까?
- 8. node.js에는 상속이 필요합니까?
- 9. 자바 스크립트 상속이
- 10. JS에서 상속이 작동하지 않습니까?
- 11. 상속이 나 빠졌습니까?
- 12. YAML에 상속이 가능합니까?
- 13. 중첩 클래스 상속이
- 14. 분산 다중 마스터 데이터베이스가 필요한 경우 어떤 대안이 있습니까?
- 15. 실패 할 시나리오가 필요합니다. Array.ConstrainedCopy()
- 16. PostgreSQL 역할 상속이 작동하지 않습니까?
- 17. ViewModel에서 View w.r.t.의 메소드를 호출해야하는 시나리오가 있습니까? WPF에서 MVVM?
- 18. 동일한 웹 사이트에 여러 양식 인증 시나리오가 있습니까?
- 19. Struts2 Model-Driven에서 상속이 가능합니까?
- 20. View 컨트롤러 및 펜촉에 대해 상속이 지원됩니다.
- 21. VxWorks에서 우선 순위 상속이 발생한 이유는 무엇입니까?
- 22. 다른 EJB 모듈을 통한 EJB 상속이 가능합니까?
- 23. 어떻게이 일반 상속이 (내부적으로) 수행 되었습니까?
- 24. NHibernate : 간단한 삭제 고아 시나리오가 작동하지 않습니다.
- 25. 왜 다중 SSP를 생성해야합니까?
- 26. IE8에서 CSS 상속이 왜 작동하지 않습니까?
- 27. 왜 코코아는 상속이 아닌 대리자를 사용합니까?
- 28. JavaScript 기반 상속이 어떻게 작동하는지 배우는 곳?
- 29. 상속이 예외 처리에 영향을주는 이유는 무엇입니까?
- 30. 관계형 데이터 : 엔터티 상속이 접근합니다. 우수 사례
예. 예제도 필요합니까? 너는 약간을 요구해야한다. – Welbog
아니요 대부분의 튜링 언어는 지원하지 않습니다. –
나는 이것 하나가 http://stackoverflow.com/questions/573913/a-use-for-multiple-inheritance에 가깝다고 생각한다. – Arnkrishn