我有classA和ClassA继承ClassX和classX的访问方法。如何通过继承访问ClassY的methiod,因为多重继承是不可能的。我不想为此创建另一个其他组合类。我想使用相同的classA进行多重继承。
答案 0 :(得分:4)
没有多重继承。实现这一目标的唯一方法是合并两个类的heirarchies。通过让ClassX继承ClassY或ClassY继承ClassX(然后ClassA继承子类X或Y)。
如果两个类不符合设计,则可能需要重新考虑您的设计以及不想使用合成的原因。
答案 1 :(得分:2)
与Objective-C一样,Swift没有多重继承。 Swift使用协议和类别为您提供相同的能力。您可以定义一个定义一组方法的协议,然后您可以将该协议的支持添加到多个类。您通常可以根据需要将协议构建到类别中,然后根据类别构建对类别的支持。
答案 2 :(得分:1)
如前所述,语言不支持多重继承(ObjC和Swift都不支持)。如果需要从多个类继承方法/属性,则需要使用合成。或者,语言允许您做的是让一个类符合多个协议,这可能是也可能不是您尝试解决的问题的解决方案。
我遇到的情况很少,我认为我确实需要多重继承,即使对于这些情况,通常也会通过采用适当的代码设计模式解决它们(考虑类似Gang of Four设计模式的东西) )。从本质上讲,您希望以这样的方式抽象代码,以便不再需要多重继承。