Как создать класс, который может наследовать от любого из двух разных классов?

#oop #delphi #delphi-10.3-rio

#ооп #delphi #delphi-10.3-rio

Вопрос:

Я ищу способ создать a TSpeaker , который может быть основан на TBose class или может быть основан на TSonos class . Возможно ли это вообще в Delphi сегодня? Какие механизмы я должен искать?

Комментарии:

1. Может быть, a TSpeaker может содержать a TTechnicalImplementation с TBose и TSonos быть TTechnicalImplementation s ?

2. Композиция — ваш друг в этом случае, как @AndreasRejbrand уже сделал для этого пример.

3. Мне кажется, ваше дерево наследования перевернуто. У вас должна быть база TSpeaker , которая имеет производные TBoseSpeaker и TSonosSpeaker .

4. Предки класса являются статическими, определяются и фиксируются во время компиляции. Итак, возможно ли то, о чем вы просите? Нет.

5. Или смотрите на поддержку интерфейса, например, ‘поддержка динамиков sonos и базового протокола’. Затем вы должны определить базовый класс TSpeaker и в зависимости от фактической реализации динамика (TSpeaker1 или TSpeaker2) добавить интерфейс ISonosSpeakerSupport и / или IBoseSpeakerSupport.