的 「Objective-C的Java程序員,第1部分」 介紹由大衛Chisnall的指出「多基類」是什麼意思?
因爲你可以有多個基類,Objective-C的介紹 ID類型來表示一個指針到某種對象。您可以在任何對象類型和id之間隱式轉換 。
盡我的理解,Objective-C的是單繼承(Java一樣,但不像C++)。
那麼「多基類」是什麼意思(在這種情況下)?
的 「Objective-C的Java程序員,第1部分」 介紹由大衛Chisnall的指出「多基類」是什麼意思?
因爲你可以有多個基類,Objective-C的介紹 ID類型來表示一個指針到某種對象。您可以在任何對象類型和id之間隱式轉換 。
盡我的理解,Objective-C的是單繼承(Java一樣,但不像C++)。
那麼「多基類」是什麼意思(在這種情況下)?
這意味着你可以定義你自己的根或「基」類。
@interface MyRootClass
@end
請注意,它不會從NSObject
繼承。
實際上,從來沒有這樣做過,因爲上述類不能與其他系統API互操作地使用,因爲它們都期望得到NSObject
的繼承行爲。但是,這並不是真正的id
類型背後的動機。 id
類型意思是,毫不誇張地說,該對象引用可以是任何類的實例。
可能有多個基類是完全正交的。
不,實施NSObject
@protocol
不夠好。
歷史上(pre-NeXT),對象沒有單獨的類型,如NSObject *或NSString *;他們都是簡單的'id'(這是一種指針)。即使你現在可以將對象聲明爲指向特定類的指針,但仍然會使用'id'作爲catchall。 – echristopherson
1994年以前的NeXT類層次結構植根於Object,並且幾乎完全繼承了它。 IIRC,StepStone的對象層次結構也是如此。在一般可用的ObjC環境中,總是有一個強調一個根類的概念。 – bbum
1994年以前的NeXT類基本上像StepStone類還是更類似於後來的NS *類? – echristopherson
他們只講一個類繼承多個祖先的單繼承嗎? – blackcatweb
這正是我最初想到的,但我知之甚少,並且確信@bbum只是澄清了這意味着什麼。 Objective-C *與Java和C++不同。 :-) –