iOS 分類和繼承


iOS 中分類(Categories) 和 繼承(Inherit)有相同的功能,但在一些細節上又有差異,簡單介紹一下兩者的異同。

分類可以在不知道系統類源代碼的情況下,為這個類添加新的方法。分類只能用來添加方法,不能添加成員變量。通過分類增加的方法,系統會認為是該類類型的一部分。比如:

 1 #import <UIKit/UIKit.h>
 2 
 3 @interface UIImage (WB)
 4 
 5 /**
 6  *  返回一張自由拉伸的圖片
 7  */
 8 + (UIImage *)resizedImageWithName:(NSString *)name;
 9 
10 
11 @end

UIImage 是系統的類,在不知道UIImage類源代碼的情況下,仍然可以通過分類為該類添加新的方法。而且該方法成為了該類型的一部分。若有其他的類繼承自UIImage類,則UIImage類的子類全部都擁有 resizedImageWithName 這個方法。

從這個角度來說,繼承和分類一個較大的區別是:子類繼承自父類,子類中增加的方法不會成為父類的一部分。即:假設類A繼承自 UIImage,在類A中增加了一個 resizedImage 的函數,父類UIImage並不能使用該函數,當有新的類,比如說類B繼承自 UIImage時,類B中沒有 resizedImage函數。

但是繼承既能夠添加方法,也能夠添加成員變量。當然,所添加的成員變量,也僅限於在子類中使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM