繼承和類別的區別

在Objective-C中,給一個類擴展一個其它方法,有兩種實現方式:類別和繼承。

1.繼承Inherit

這個是面向對象語言都有的一個特性,子類會繼承父類的方法和屬性。

對于以下情況,無法使用類別,必須使用繼承。

1)新擴展的方法與原方法同名,但是還需要使用父類的實現。因為使用類別,會覆蓋原類的實現,無法訪問到原來的方法。

2)擴展類的屬性,這個類別無法做到。

示例代碼:

//? ViewControllerEx.h

@interface ViewControllerEx : UIViewController

//自己需要添加的方法

@end

// ViewControllerEx.m

@implementation ViewControllerEx

// 方法的實現

@end

2.類別category

這是Objective-C語言的一個特性,可以在不改變類名和原來類的實現的前提下,實現對類的方法擴展。

以下兩種方式最后使用類別。

1)針對系統提供的一些類,例如:NSString,NSArray,NSNumber等類,系統本身不提倡使用繼承去擴展方法,因為這些類內部實現對繼承有所限制,所以最后使用類別來進行方法擴展。

2)類別支持開發人員針對自己構建的類,把相關的方法分組到多個單獨的文件中,對于大型而復雜的類,這有助于提高可維護性,并簡化單個源文件的管理。

示例代碼:

// 這里有一個約定俗成的規定,類別文件命名時,是原類名+擴展標識名

//? NSString+ex.h

@interface NSString (ex)

// 擴展的類回別方法

@end

//? NSString+ex.m

@implementation NSString (ex)

// 方法的實現

@end

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容