A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© machao610 中级黑马   /  2014-5-31 22:18  /  1780 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文


self 与 super方法的对比

    self
    1.概念:指向了当前对象(方法调用着)   谁调用指向谁
    2.可以用“self—>成员变量名”访问当前对象内部的成员变量
    3.[self 方法名]可以调用其他对象方法/类方法
    super
    1.直接调用父类中的某个方法
    2.super处在对象方法中,就调用父类的对象方法, super处在类方法中就调用父类的类方法
    3.使用场景:子类重写父类方法时想保留父类的一些行为方法

#import <Foundation/Foundation.h>
@interface Zoombie : NSObject
- (void)walk;
@end

@implementation Zoombie
- (void)walk
{
    NSLog(@"往前挪一步");
}
@end


@interface JumpZoombie : NSObject
- (void)walk;
@end

@implementation JumpZoombie
- (void)walk
{
    NSLog(@"先跳两步");

    //[self walk]; 这里用[self walk]时 self是调用JumpZoobie的walk方法会在当前方法中找 walk方法 此时就成了死循环所以应该用super方法
    [super walk];  //此时super会调用父类的walk方法当前方法是对象方法所以super就调用父类的对象方法
   // NSLog(@"往前挪一步");
}
@end


int main()
{
    JumpZoombie *jz = [JumpZoombie new]

    [JumpZoombie walk]

    return 0;
}

评分

参与人数 1黑马币 +6 收起 理由
wanzhu159 + 6 赞一个!

查看全部评分

1 个回复

倒序浏览
赞一个!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马