2012-04-26 109 views
3

繼承與目標類別有什麼區別-c繼承與類別有什麼區別

兩者都用於子類!所以它們之間有什麼區別

+0

[至少有一些](http://stackoverflow.com/search?q=%5Bobjc%5D+inheritance+category)現有問題:http://stackoverflow.com/questions/522341/difference-在繼承和類別在目標C,http://stackoverflow.com/questions/9343670/what-is-the-actual-use-of-categories-instead-of-inheritance以及文檔,這會爲你解答。 – 2012-04-26 19:03:34

回答

4

一個類別爲類添加了額外的功能,根本沒有生成一個新的類,只是擴展它,但它沒有隱含或任何喜歡它的多態性。

另一方面,繼承會自行生成一個新類,您可以通過多態性添加新的實例變量並覆蓋父類的行爲。

+1

我還要補充說,在一個類別中,你不能添加實例變量,而在一個子類中你可以。 – jmstone617 2012-04-26 20:27:40

8

雖然Category是向基類添加功能的好方法,但像我這樣的來自其他面向對象技術(例如Flash)的人員會發現有點難以理解這個東西與繼承鏈的關係。同樣的問題出現在我的腦海裏,我對這個話題做了一個快速的研究。

最後一件事是類別和它講述的是同一件事。它爲基類添加了功能。如果你還記得這一點,那麼就不會有任何困惑。

那麼,爲了理解,讓我們舉個例子。假設有一個類A,而類B是類A的一個子類。在應用程序類B中使用了很多地方。現在,需要爲類A添加更多功能,因此新類別被寫爲「A + newRole」。一旦編寫了這個類,新的功能被添加到基類中,在這種情況下,就是A類。這意味着,所有那些類A的子類,比如B類的類自動獲得該功能。這嚇壞了。可以直接繼續,並從子類中調用添加到Category中的新方法。這裏唯一需要的是將類別文件導入到適當的位置。

+1

很好的解釋@Mayank – iSwaroop 2014-12-09 11:18:59

+0

好吧。子類和類別呢? – 2016-03-30 18:31:49