【发布时间】:2018-01-31 03:42:28
【问题描述】:
Objective-C 或 Swift 不支持 multiple Inheritance。这是一个众所周知的事实。在 iOS 中,有一些解决方法可以支持 multiple Inheritance。
所以我的问题是为什么 Swift 和 Objective-C 不支持多重继承?我已经浏览了有关此问题的各种链接,但找不到任何适当的讨论。苹果没有提供这个有什么特别的原因吗?
感谢任何答案,因为我对此一无所知。
【问题讨论】:
-
你的意思是除了这是一个可怕的想法吗?
-
我对这个想法持中立立场,此外我只是想知道为什么一开始就不存在多重继承(任何具体原因)。
-
我会给你一些关键词。阅读 C++ 中的多重继承。阅读钻石问题。阅读为什么必须引入 虚拟继承 来解决它。然后看看通常通过多重继承解决的问题。然后想想 Java 可以通过 interfaces 解决所有这些问题 - 接口而不是实现的多重继承更有意义。 Java 接口在 Swift 中称为 protocols。
-
@Sulthan C++ 类是在 Objective C 之后发明的(它是 Smalltalk 的类和对象的直接副本)所以 C++ 在这里无关紧要。
-
@mmmmmm C++ 是最早尝试多重继承的语言之一,因此参考是相关的。多重继承只会带来问题,大多数 C++ 程序员无论如何都不会使用它。我会说接口/协议显然是更简单的设计选择。当然,都是连接到抽象类和方法调用的方式在 Smalltalk/Obj-C 中设计的(消息发送,可以调用不存在的消息)。
标签: ios objective-c swift multiple-inheritance