首先先写两个类 fist和two,two继承fist类
@interface First:NSObject { int a;//声明了一个变量 } -(void) setA:(int)c;//对a赋值的方法 @end @implementation First -(void)setA:(int)c { a=c; } @end //类2 @interface Two : First { int b; } -(void)setB:(int)d; -(void)print; @end @implementation Two -(void)setB:(int)d { b=d; } -(void)print { NSLog(@"a的值为%d/nb的值为%d",a,b); NSLog(@"这时self==%@",[self class]); NSLog(@"super=====%@",[superclass]); } @end int main(int argc, const char * argv[]) { @autoreleasepool { Two *two=[[Two alloc] init]; NSLog(@"这时frist中的函数"); [two setB:2]; NSLog(@"这是two中的函数"); [two setA:1]; [two print]; } return 0; }
运行的结果是:
这时我们看到self和super的值一样 区别在哪呢????
其实是这样的 self和super都是指的是类的对象 self指的是本类的对象,而super指的是父类的对象
他们相当于系统自己声明的一个类对象。