類別
- 類別:類別是對一個功能完備的類的一種補(bǔ)充,就像是一個東西的主要基本功能都完成了,可以用類別為這個類添加不同的組件,使得這個類能夠適應(yīng)不同情況的需求囤官。比如animal這個類,具有eat和run等方法蛤虐,想給這個類添加一個bark的方法党饮,可以用類別。
假設(shè)你接到一個大項(xiàng)目:計(jì)算兩個整數(shù)的和驳庭,差刑顺。
#import <Foundation/Foundation>
@interface Calculate :NSObject
@property int number1,number2;
- (int) sumNumber1:(int)num1 andNumber2: (int)num2;//加法
- (int) subNumber1:(int)num1 andNumber2: (int)num2; //減法
- (void)print;
@end
幾天后,客戶需求發(fā)生變化,不僅需要加法捏检,減法功能荞驴,還要能做到乘除。我們的做法一般是直接在Calculate類中添加乘贯城,除的方法。當(dāng)然在這里是沒有任何問題的霹娄。但是在現(xiàn)實(shí)的項(xiàng)目中能犯,代碼量十分巨大,以及業(yè)務(wù)邏輯相當(dāng)復(fù)雜的情況下犬耻,直接修改之前源代碼是冒有很大的風(fēng)險(xiǎn)的踩晶!我們現(xiàn)在可以利用分類解決這個問題
#import <Foundation/Foundation>
#import”Calculate”//既然是對原有類的接口的擴(kuò)展,所以必須包括原始接口
@interface Calculate(MulAndDiv)//告訴編譯器這是為Calculate定義的分類名為MulAndDiv
- (int) MulNumber1:(int)num1 andNumber2: (int)num2;//乘法
- (int) DivNumber1:(int)num1 andNumber2: (int)num2; //除法
@end
繼承
- 繼承:多個類具有相同的實(shí)例變量和方法時枕磁,考慮用繼承渡蜻。即子類可以繼承父類的相同特性。如animal具有年齡和體重兩個屬性计济,dog也具有年齡和體重兩 個屬性茸苇,dog可以繼承animal的這兩個屬性,即為繼承沦寂。
- 共同點(diǎn):都是給一個類進(jìn)行擴(kuò)展
- 區(qū)別:
- 1.類別是對方法的擴(kuò)展学密,不能添加成員變量。繼承可以在原來父類的成員變量的基礎(chǔ)上传藏,添加新的成員變量
- 2.類別只能添加新的方法腻暮,不能修改和刪除原來的方法。繼承可以增加毯侦、修改和刪除方法哭靖。
- 3.類別不提倡對原有的方法進(jìn)行重載。繼承可以通過使用super對原來方法進(jìn)行重載侈离。
- 4.類別可以被繼承试幽,如果一個父類中定義了類別,那么其子類中也會繼承此類別霍狰。