[黑馬程式員]Objective-C 物件導向之分類

來源:互聯網
上載者:User

標籤:

什麼是分類

分類可以使得不修改原來類的代碼的基礎上,對某個類進行方法的擴充。

來看一個簡單的例子:

我們現有一個類Calculator我們為其實現了加法和減法方法:

#import "Foundation/Foundation.h"@interface Calculator : NSObject// Plus-(int) plus: (int)num1 and:(int)num2;// Less-(int) less: (int)num1 and:(int)num2;@end@implementation Calculator-(int) plus:(int)num1 and:(int)num2{    return num1 + num2;}-(int) less:(int)num1 and:(int)num2{    return num1 - num2;}@end

我們將上面Calculator的實現和聲明分別置於Calculator.hCalculator.m之中,現在的需求是,我們希望對這個計算機類進行擴充,使之能夠進行乘法和除法運算,但因為分工問題,將乘法和除法分別給TomJerry進行開發,但如果TomJerry同時修改Calculator.hCalculator.m會造成各種各樣的衝突(實際開發中可能會使用SVN或者GIT來自動處理這些問題,但此處假設的需求遠比實際需求簡單得多),因此,我們希望TomJerry各自建立不同的檔案來進行開發,就需要使用到OC的分類。

Tom:

#import <Calculator.h>@interface Calculator(Tom)-(int)multiplied:(int)num1 and:(int)num2;@end@implementation Calculator(Tom)-(int)multiplied:(int)num1 and:(int)num2{  return num1 * num2;}@end

註:為了節省篇幅,將聲明和實現寫在一起,在下文我們仍然認為上面代碼放置於Calculator+Tom.hCalculator+Tom.m中,下同。

Jerry:

#import <Calculator.h>@interface Calculator(Jerry)-(double)except:(int)num1 and:(int)num2;@end@implementation Calculator(Jerry)-(double)except:(int)num1 and:(int)num2{  return num1 / num2;}@end

當我們需要使用時,分別引入Calculator.h、Calculator+Tom.h、Calculator+Jerry.h:

#import "Calculator.h"#import "Calculator+Tom.h"#import "Calculator+Jerry.h"int main(){  Calculator *calculator = [Calculator new];  [calculator plus:3 and: 4];               // output: 7  [calculator less:3 and: 4];               // output: -1  [calculator multiplied:3 and: 4];         // output: 12  [calculator except:3 and: 4];             // output: 0.75  return 0;}
使用注意:
  • 分類只能擴充方法,不能增加成員變數的定義
  • 類和分類中的如果有相同名稱的方法,會覆蓋掉原來類的同名方法,導致原類的方法不可用
  • 調用的順序是:分類的方法優先順序是最高的,然後才是原來類的方法的優先順序次之
  • 如果一個類有多個分類的時候,編譯的時候的順序,就是方法調用的優先順序

 

[黑馬程式員]Objective-C 物件導向之分類

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.