[super test];
- (void)test { NSLog(@"%@ %@ %@ %@ %@",self,[self class],[self superclass],[super class], [super superclass]); // SubPerson Person SubPerson Person }
<SubPerson: 0x7fe169f20f70> SubPerson Person SubPerson Person 由输出可知,[super class],是子类. 因为是子类调用的这个方法;[self superclass]才是父类.
objc_msgSendSuper(, sel_registerName("description"));
SubPerson 继承自Person 父类中声明了一个方法:
在子类中
子类中有test方法的实现,调用子类自己的test方法,子类的test方法中又调用了父类的test方法[super test] 在父类中
重要总结(面试题):class:任何一个类调用class方法:目的是获取方法调用者的类型superclass:任何一个类调用class方法:目的是获取方法调用者的父类super:不是指针,编译器指示符super作用:表示去调用父类的方法,本质还是当前对象去调用父类方法super不是父类对象,仅仅是一个指向父类方法标志(责任编辑:好模板) |