Поскольку наследование, основа полиморфизма ООП, обозначает отношение «а-А» - ваш вопрос, похоже, требует переопределения отношений «есть», а не «отношения».
Это не сработает.
Вернитесь к некоторым вводным объектно-ориентированным текстам или онлайн-материалам и изучите, что означает объектно-ориентированное: полиморфизм, инкапсуляция и идентичность.
- Снимите личность, и вы получите COM / ActiveX и украденные учетные данные.
- Снимите капсулирование, и никто не будет в безопасности.
- Уберите правила типа полифизма, и у вас, по сути, ничего нет, это обязательно то, что он говорит.
Если вам нужна такая ситуация, запрограммируйте на "C". Не связывайтесь с притворством писать код ООП, используя возможности языка ООП. Просто используйте struct для хранения ваших данных. Положите союзы везде. Используйте typecast с готовностью.
Скорее всего, ваша программа не будет работать надежно, но вы сможете обойти любые ограничения, введенные такими языками, как Java и C ++, чтобы сделать программы более надежными, удобными для чтения и более легкими для написания / изменения.
В динамическом языке программирования, таком как SmalTalk или Python, вы можете существенно оторвать крылья бабочки во время выполнения. Но только путем изменения / искажения типа объекта.
Это ничего не купит. Существуют методы кодирования / проектирования и шаблоны проектирования, которые позволяют вам достичь любого «хорошего» результата, который может быть после этого, похож на этот.
Лучше всего, если вы подумаете о том, что именно вы пытаетесь сделать в своем приложении, а затем попытаетесь найти самый безопасный / простой способ сделать это, используя звуковые приемы.