现有基类Parent如下:1
2
3
4
5
6
7
8
9
10#import "Parent.h"
@implementation Parent
- (void)test{
NSLog(@"%@",[self class]);
NSLog(@"%@",[self superclass]);
NSLog(@"%@",[super class]);
}
@end
子类Son如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14#import "Son.h"
@implementation Son
- (void)test{
// 第一组输出
NSLog(@"%@",[self class]);
NSLog(@"%@",[self superclass]);
NSLog(@"%@",[super class]);
// 第二组输出
[super test];
}
@end
访问aSon.test(),两组输出的内容是一样的Son、Parent、Son,[self supperClass]就是访问的父类名,而[self class]和[super class]他们的调用者都是aSon,super只是一个编译修饰符,不是指针,指向父类标志(使用父类的代码),本质还是当前aSon调用Parent的方法,并不是用aParent对象调用Parent的方法,毕竟还没有直接[new Person]。