是否有能力将基类插入继承层次结构? 这是一个例子:
@interface BaseClass // has a lot of basic functionality and interface
{...}
@end
@interface ChildClass : BaseClass // customizes BaseClass functionality
{...}
@end
@interface BaseClassEx : BaseClass // add some features to base class
{...}
@end
我希望ChildClassEx具有来自ChildClass的所有方法,但是从BaseClassEx继承
答案 0 :(得分:0)
为什么不继承ChildClass
?这将自动继承所有超类中的所有内容
@interface BaseClassEx : ChildClass // add some features...
{...}
@end
答案 1 :(得分:0)
听起来像是多重继承。目标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
现在你可以有四种东西。
类继承是“是一种”模式。以上结合了“是”模式和“有”模式。为了获得你想要的ChildClassEx的效果,你做了一个“是”BaseClassEx,但是“有一个”ChildUtility。
答案 2 :(得分:0)
Objective-C上没有多重继承。但是,您可以使用几种不同的模式来实现类似的效果。只要您的BaseClassEx只添加新方法(并且不会尝试覆盖现有BaseClass方法的行为),最简单的方法是声明一个类别
@interface BaseClass(BaseClassEx)
// new method declarations
@end
@implementtion BaseClass(BaseClassEx)
// new method definitions
@end
如果这样做,BaseClass的所有实例都将拥有新方法。这适用于任何现有的类,甚至像NSString。