码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-c 子类重写方法调用[super method]小实验

时间:2014-08-06 11:41:41      阅读:241      评论:0      收藏:0      [点我收藏+]

标签: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 son
2014-08-06 11:00:35.732 testtest[13606:303] i am father

如果去掉[super setNum:c],就只输出i am son。很明显了,子类重写方法添加自己的特性,而通过[super method]来保留父类的特性。

Objective-c 子类重写方法调用[super method]小实验,布布扣,bubuko.com

Objective-c 子类重写方法调用[super method]小实验

标签:style   blog   color   io   2014   ar   cti   div   

原文地址:http://www.cnblogs.com/happyacm/p/3894102.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!