objective-c - Objective-C 中是否可以创建一个具有两个父类(super class)的类?

标签 objective-c xcode superclass

我目前有一个已经有父类(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/

相关文章:

ios - 自定义 UIBackButtonItem 和 UINavigationController 手势

ios - 在 iOS 中切换位置权限

objective-c - 如何为属性的集合属性编写我自己的迭代器(使用正确的类型转换)?

ios - Swift不支持SDK 'iPhoneSimulator8.4.sdk'

ios - 快速向左或向右滑动

java - 父类(super class)中的方法声明

ios - 在 Google map 中绘制多个标记

ios - 禁止 UITableViewcontroller 横向旋转(保持纵向)

Java:强制子类覆盖父类(super class)的方法

java - 未调用子类抽象方法