У меня есть классA и ClassA, наследующий ClassX и методы доступа классаX. Как я могу получить доступ к методу ClassY с наследованием, потому что множественное наследование невозможно. Я не хочу создавать для этого другой класс композиции. Я хочу использовать тот же классA для множественного наследования.Как наследовать несколько классов в объекте C?
ответ
Нет множественного наследования. Единственный способ добиться этого - слияние двухуровневой иерархии. Либо, если ClassX наследует ClassY или ClassY, наследует ClassX (тогда ClassA наследует дочерний класс X или Y).
Если два класса не по дизайну вписываются в одну и ту же иерархию, вы можете пересмотреть свой дизайн и причины, по которым вы не хотите использовать композицию.
Фактически я наследую класс GoogleAdmodBanner в классе My и получаю доступ ко всем методам и делегированию, я также хочу наследовать класс GoogleInterstitialAd для доступа ко всем методам и делегировать в этом одиночном классе –
Он делает не имеет смысла, что один и тот же класс является одновременно Баннером * и * также Интерстициальным (они имеют разные проявления, по крайней мере). Наследование означает * IS-A *. Если вы не можете сказать, что «X является типом Y», то X не должен наследовать от Y. –
Зачем вам нужны обе функции из двух классов в том же классе, который вы реализуете? Почему бы не использовать отдельные классы? –
Подобно Objective-C, Swift не имеет множественного наследования. Swift использует протоколы и категории, чтобы дать вам такую же способность. Вы можете определить протокол, который определяет набор методов, а затем добавить поддержку этого протокола к нескольким методам. Вы можете часто создавать поддержку протокола в категории, а затем эту категорию для своих классов по мере необходимости.
Как уже говорилось, множественное наследование не поддерживается языком (ни ObjC, ни Swift). Если вам нужно наследовать методы/свойства из нескольких классов, вам нужно будет использовать композицию. В качестве альтернативы, то, что язык позволяет вам сделать, - это обеспечить соответствие класса нескольким протоколам, что может быть или не быть решением проблемы, которую вы пытаетесь решить.
Я столкнулся с очень немногими случаями, когда я думал, что мне действительно нужно иметь множественное наследование, и даже для этих случаев они обычно решались путем использования соответствующего шаблона проектирования кода (думая о чем-то вроде конструкции «Банда четырех» узоры). По сути, вы хотите абстрагировать свой код таким образом, чтобы множественное наследование больше не требовалось.
- 1. Наследовать от двух классов в объекте C
- 2. Как объявить массив классов в объекте c
- 3. Как я могу наследовать несколько унаследованных классов в одном массиве?
- 4. Наследовать от двух классов
- 5. Как наследовать от двух классов
- 6. Строительство динамических классов в объекте C
- 7. Как наследовать System.Data.SQLite в C#
- 8. Несколько условий в объекте C
- 9. Возможно ли в Django наследовать несколько абстрактных базовых классов?
- 10. Несколько делегатов в объекте-c
- 11. Java Как наследовать переменные из классов ActionListener
- 12. C# Несколько базовых классов
- 13. Наследовать от двух полиморфных классов
- 14. Может ли класс CSS наследовать один или несколько классов?
- 15. Python: как наследовать от двух классов?
- 16. Как наследовать методы родительского класса в C++
- 17. Как наследовать шаблонный класс в C++?
- 18. Несколько асинхронных запросов сразу в объекте c
- 19. Как наследовать интерфейс C++/CLI в C#?
- 20. Как наследовать от нескольких базовых классов в Java?
- 21. C# возвращает несколько значений в объекте
- 22. Как скопировать объект в объекте c
- 23. C++ в C# - Наследовать классы
- 24. C++ Один файл несколько классов
- 25. C++ несколько дочерних классов - наследование
- 26. несколько классов в файле .h в C++?
- 27. Логика при включении классов cpp в объекте c проекта
- 28. C# Пропустить несколько классов как один параметр
- 29. Несколько классов html с C#
- 30. Несколько суперклассов в Objective-C?
У меня также есть проблема с наследованием нескольких классов. –
Это вопрос того, как вы структурируете свой код. То, что вы просите, невозможно, вам нужно подумать, где вы размещаете свои методы, и почему вам нужно наследовать 2 разных класса. –
Ваш вопрос выглядит как «ObjC не имеет множественного наследования. Как сделать множественное наследование в ObjC?» Ответ в этом вопросе. Вы этого не сделаете. Какую проблему вы решаете? –