Objective c 什么是;“多个基类”;什么意思?

Objective c 什么是;“多个基类”;什么意思?,objective-c,inheritance,Objective C,Inheritance,DavidChisnall的“面向Java程序员的Objective-C,第1部分”介绍中指出 因为可以有多个基类,Objective-C引入了 id类型表示指向某种对象的指针。你可以 在任何对象类型和id之间隐式转换 据我所知,Objective-C是单继承(与Java一样,但与C++不同) 那么,“多个基类”是什么意思(在本文中)?它意味着您可以定义自己的根类或“基类” 请注意,它不是从NSObject继承的 在实践中,这是永远不会实现的,因为所述类不能真正与其他系统API交互使用,因为它们

DavidChisnall的“面向Java程序员的Objective-C,第1部分”介绍中指出

因为可以有多个基类,Objective-C引入了 id类型表示指向某种对象的指针。你可以 在任何对象类型和id之间隐式转换

据我所知,Objective-C是单继承(与Java一样,但与C++不同)


那么,“多个基类”是什么意思(在本文中)?

它意味着您可以定义自己的根类或“基类”

请注意,它不是从
NSObject
继承的

在实践中,这是永远不会实现的,因为所述类不能真正与其他系统API交互使用,因为它们都期望
NSObject
继承的行为

不过,这并不是
id
类型背后的真正动机。
id
类型的字面意思是,这个对象引用可以是任何类的实例

可能有多个基类是完全正交的


不,实现
NSObject
@protocol
真的不够好。

他们只是在说类层次结构中沿着多个祖先的单一继承吗?这正是我最初的想法,但我没有足够的知识来了解这一点,而且@bbum确实阐明了这意味着什么。Objto-C与java和C++不同。历史上(下一步之前),对象没有单独的类型,如NSObject*或NSString*;它们都只是
id
(一种指针)。尽管现在可以将对象声明为指向特定类的指针,但将
id
作为catchall的旧用法仍然存在。1994年以前的下一个类层次结构是以对象为基础的,几乎所有东西都是从该对象继承来的。IIRC,StepStone的对象层次结构也是如此。在通常可用的ObjC环境中,总是有一个强大的根类概念来管理它们。1994年以前的下一个类基本上是类似于StepStone类,还是更类似于后来的NS*类?这些类主要是StepStone类,有一些修改。对象、列表和散列都是由运行时提供的(列表和对象的剩余部分仍在现代运行时中)。两者的分歧之处在于AppKit(下一个)和各种ICPAK(阶梯)。不过,这已经有很长时间了,细节也很模糊。
@interface MyRootClass
@end