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; }
|