【问题标题】:Inherit from two classes in objective C [duplicate]从目标C中的两个类继承[重复]
【发布时间】:2013-02-19 09:20:51
【问题描述】:

我有两节课。我在其中定义了一些方法。我需要在一个类中从这两个类中获取这些方法,而无需重新定义。 Objective C 不支持多重继承,我该如何实现呢?

【问题讨论】:

  • 只有当类之间的关系是“X 是一种 Y”时,才应该使用继承。如果您只需要使用两个类的方法,只需调用它们(如果需要,您可以将这些类的实例作为属性维护)。
  • 我见过人们将继承层次结构拼接在一起,以便两个所需的超类之一从另一个继承,而最派生的类从那个继承。尽管在两个祖先类之间不存在“is-a”关系或多态性的需要。无论你做什么来解决你的问题,我都建议不要这样做!

标签: objective-c multiple-inheritance


【解决方案1】:

不要使用继承,使用组合。

#import "classname1.h"
#import "classname2.h"

@implementation classname3

 -(id)method1
 {
     id val1 = [classname1 methodToUse];
     id val2 = [classname2 otherMethodToUse];
     return val1 + val2;
 }
@end

【讨论】:

  • 谢谢。我学到了新东西 Bret.+ 1 的帮助
【解决方案2】:

Objective-C 不支持多重继承。您可以创建类的实例并在新类中访问它们的方法

@interface class3
{
   class1 *c1;
   class2 *c2;
}

和访问方法使用

[c1 yourMethod];
[c2 yourMethod];

您还可以使用协议来访问多个类的方法,方法是创建委托方法并在其他类中实现它,如http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols.html 中所述

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2011-09-04
    • 1970-01-01
    • 2014-07-14
    • 2011-10-01
    相关资源
    最近更新 更多