iOS super关键字

super:是编译器指示符,仅仅是一个标志,并不是指针,仅仅是标志的当前对象去调用父类的方法,本质还是当前对象调用
class:获取方法调用者的类对象

例如1、:创建一个类Person
再创建一个字类SonPerson继承自Person

SonPerson中输出:

 NSLog(@"%@ %@ %@ %@",[self class],[self superclass],[super class],[super superclass]);

结果:

//  SonPerson Person SonPerson Person

如2、在子类SonPerson中调用父类中的方法+ (void)text

在子类中需要这样调用[super text];

在父类中实现

+ (void)text
{
    // super:是编译器指示符,仅仅是一个标志,并不是指针,仅仅是标志的当前对象去调用父类的方法,本质还是当前对象调用
    // class:获取方法调用者的类对象
    NSLog(@"%@ %@ %@ %@",[self class],[self superclass],[super class],[super superclass]);
   
  }  
    

输出结果如下

 // SonPerson Person SonPerson Person

注意:

super:是编译器指示符,仅仅是一个标志,并不是指针,仅仅是标志的当前对象去调用父类的方法,本质还是当前对象调用
super:并不是让父类对象调用方法,调用者还是本身
class:获取方法调用者的类
superclass:获取方法调用者的父类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容