Objective-c 子類重寫方法調用[super method]小實驗

來源:互聯網
上載者:User

標籤:style   blog   color   io   2014   ar   cti   div   

最近溫習《learn objective-c on the mac》

第4章關於重寫的調用了[super setFillColor:c]很不理解其作用,可能是因為翻譯邏輯不清的原因吧,特地寫了個小例子理解一下

定義一個father類和son類

father:

#import <Foundation/Foundation.h>@interface father : NSObject{    int num;}-(void)setNum:(int)num;@end
#import "father.h"@implementation father-(void)setNum:(int)c{    num = c;    NSLog(@"i am father");}@end

son:

#import <Foundation/Foundation.h>#import "father.h"@interface son : father-(void)setNum:(int)num;@end
#import "son.h"@implementation son-(void)setNum:(int)c{    num = c;    if (1 == num) {        NSLog(@"i am son");    }    [super setNum:c];//這裡是關鍵    }@end

main:

#import <Foundation/Foundation.h>#import "son.h"int main(int argc, const char * argv[]){    @autoreleasepool {        son *ii = [[son alloc]init];        [ii setNum:1];    }    return 0;}

輸出結果:

2014-08-06 11:00:35.731 testtest[13606:303] i am son2014-08-06 11:00:35.732 testtest[13606:303] i am father

如果去掉[super setNum:c],就只輸出i am son。很明顯了,子類重寫方法添加自己的特性,而通過[super method]來保留父類的特性。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.