Звучит как множественное наследование.В Objective C его нет.
Исходя из вашего описания, я бы предложил другой шаблон проектирования.
@class BaseUtility // has a lot of basic functionality
{...}
@end
@class BaseClass // has interface
{...}
@property BaseUtility *utility;
@end
@class ChildUtility : BaseUtility // customizes basic functionality
{...}
@end
@class BaseClassEx : BaseClass // add some features to base class
{...}
@end
Теперь у вас может быть четыре вида вещей.
- BaseClass с назначенной ему BaseUtility, который похож на ваш BaseClass.
- BaseClass с назначенным ему ChildUtility, который похож на ваш ChildClass.Он получает настраиваемое поведение и имеет тот же интерфейс, что и BaseClass.
- BaseClassEx с назначенной ему BaseUtility, которая похожа на BaseClassEx.Он имеет дополнительные функции (дополнительный интерфейс, я полагаю).
- BaseClassEx с назначенным ему ChildUtility, который похож на ChildClassEx, который вы хотите.Он имеет дополнительные функции и настраиваемую функциональность.
Наследование классов - это шаблон "is".Вышеприведенное объединяет шаблон «есть» и шаблон «имеет».Чтобы получить эффект ChildClassEx, который вы хотите, вы создаете что-то, что «BaseClassEx, но» имеет «ChildUtility».