我目前有一个已经有父类(super class)的类。我意识到我也想从不同的现有类调用方法,但没有将其定义为父类(super class)。是否可以将第二个父类(super class)分配给我现有的子类,或者这是不可能的。
如果可以的话,我会怎样做呢?如果不可能,有什么解决方法?
最佳答案
这是不可能的。 Objective-C 是单继承。
根据您的情况,组合可能是解决此问题的正确模式:假设您有类 Foo,并且您还希望 Foo 的实例从类 Bar 继承行为。
您可以将 Bar 的实例保留为 Foo 中的实例变量,并将方法调用委托(delegate)给它。因为 Objective-C 是动态类型的,所以您可以简单地将 Foo 实例转换为 Bar 实例,并将其传递给任何需要 Bar 的代码。只要 Foo 响应与 Bar 相同的所有方法,就没有人会知道其中的区别。
如果您想变得更奇特(或者 Bar 有太多方法并且您不想写出每个方法),您可以使用消息转发将 Foo 类无法识别的任何消息传递给 Bar实例。请查阅有关 forwardInvocation:
的文档,了解其工作原理。
关于objective-c - Objective-C 中是否可以创建一个具有两个父类(super class)的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13559984/