class/superclass/super/self的区别

Person继承自NSObject
#import 

@interface Person : NSObject

- (void)test;

@end
#import "Person.h"

@implementation Person

- (void)test {
    //self:获取方法的调用者
    //superclass:获取方法调用者父类类名
    //super:编译修饰符,不是指针,指向父类的一个标志,本质还是拿到当前对象去调用父类方法,注意:super并不是拿到父类对象去调用父类方法。
    NSLog(@"%@,%@,%@",[self class],[self superclass],[super class]);
    //打印结果: SonPerson,Person,SonPerson
}

@end
SonPerson类,继承自Person
#import "Person.h"

@interface SonPerson : Person

@end
#import "SonPerson.h"

@implementation SonPerson

- (void)test {
    
//    NSLog(@"%@,%@,%@",[self class],[self superclass],[super class]);
    //打印结果: SonPerson,Person,SonPerson
    
    [super test];
}

@end
方法的调用
#import "SonPerson.h"
 SonPerson *son = [[SonPerson alloc] init];
 [son test];

你可能感兴趣的:(class/superclass/super/self的区别)