2012-09-28 48 views
2

的 「Objective-C的Java程序員,第1部分」 介紹由大衛Chisnall的指出「多基類」是什麼意思?

因爲你可以有多個基類,Objective-C的介紹 ID類型來表示一個指針到某種對象。您可以在任何對象類型和id之間隱式轉換 。

盡我的理解,Objective-C的是單繼承(Java一樣,但不像C++)。

那麼「多基類」是什麼意思(在這種情況下)?

+0

他們只講一個類繼承多個祖先的單繼承嗎? – blackcatweb

+0

這正是我最初想到的,但我知之甚少,並且確信@bbum只是澄清了這意味着什麼。 Objective-C *與Java和C++不同。 :-) –

回答

3

這意味着你可以定義你自己的根或「基」類。

@interface MyRootClass 
@end 

請注意,它不會從NSObject繼承。

實際上,從來沒有這樣做過,因爲上述類不能與其他系統API互操作地使用,因爲它們都期望得到NSObject的繼承行爲。但是,這並不是真正的id類型背後的動機。 id類型意思是,毫不誇張地說,該對象引用可以是任何類的實例。

可能有多個基類是完全正交的。

不,實施NSObject@protocol不夠好。

+0

歷史上(pre-NeXT),對象沒有單獨的類型,如NSObject *或NSString *;他們都是簡單的'id'(這是一種指針)。即使你現在可以將對象聲明爲指向特定類的指針,但仍然會使用'id'作爲catchall。 – echristopherson

+0

1994年以前的NeXT類層次結構植根於Object,並且幾乎完全繼承了它。 IIRC,StepStone的對象層次結構也是如此。在一般可用的ObjC環境中,總是有一個強調一個根類的概念。 – bbum

+0

1994年以前的NeXT類基本上像StepStone類還是更類似於後來的NS *類? – echristopherson