西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > 开发教程 > C/C++教程 >

super,superClass,class的区别

时间:2016-01-15 10:20来源:未知 作者:好模板 点击:
class:获取方法调用者的类 superclass:获取方法调用者父类 super:编译指示符,仅仅表示去调用父类的方法,但并不是拿着父类对象去调用,本质还是当前对象去调用父类的方法. super:不是一个指
  • class:获取方法调用者的类
  • superclass:获取方法调用者父类
  • super:编译指示符,仅仅表示去调用父类的方法,但并不是拿着父类对象去调用,本质还是当前对象去调用父类的方法.
  • super:不是一个指针
    子类调用父类方法
  • 1.如SubPerson是Person的子类, SubPerson中下句代码表示调用父类的test方法.
[super test];
  • 2.Person的test方法:
- (void)test
{

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

    // SubPerson Person SubPerson Person
}
  • 3.运行结果为:
<SubPerson: 0x7fe169f20f70> SubPerson Person SubPerson Person
由输出可知,[super class],是子类. 因为是子类调用的这个方法;[self superclass]才是父类.
  • 我们知道, 在xcode中, 系统最终将所有代码转化为c++, [super description转化为c++, 代码是:
objc_msgSendSuper(, sel_registerName("description"));
  • 这也说明了是当前子类(self)调用的父类的方法(description).

SubPerson 继承自Person

super,superClass,class的区别

父类中声明了一个方法:

 

super,superClass,class的区别

 

在子类中

 

子类中有test方法的实现,调用子类自己的test方法,子类的test方法中又调用了父类的test方法[super test]

在父类中

 

重要总结(面试题):

class:任何一个类调用class方法:目的是获取方法调用者的类型

superclass:任何一个类调用class方法:目的是获取方法调用者的父类

super:不是指针,编译器指示符

super作用:表示去调用父类的方法,本质还是当前对象去调用父类方法

super不是父类对象,仅仅是一个指向父类方法标志


(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容