面试iOS技术交流园iOS Developer

super,superClass,class,self的含义

2016-07-29  本文已影响156人  西风颂

首先解释一下各个关键字的含义:

先创建两个类,一个 Father 类,另一个继承自 Father 的 Son 类;在父类定义一个类方法:

+ (void)test
{
    NSLog(@"%@ %@ %@ %@",[self class],[self superclass],[super class],[super superclass]);   
}

然后直接使用 [Father test]调用:
打印结果: Father NSObject Father NSObject
每一个方法的打印都可以和上面的描述对应

接着在子类的 Son .m 中重写父类的test 方法:

+ (void)test
{
    NSLog(@"%@ %@ %@ %@",[self class],[self superclass],[super class],[super superclass]);   
}

然后直接使用 [Son test]调用:
打印结果: Son Father Son Father
每一个方法的打印都可以和上面的描述对应

最后将子类的 Son .m 中test 方法改写为:

+ (void)test
{
   [super text];
/*
子类调用的本方法回到父类的 test 方法中;但同时 super 还是代
表的子类 son; 也就是说在调用父类的 test 的方法时还是子类对象在调用;
*/
}

然后使用 [Son test]调用:
打印结果: Son Father Son Father
每一个方法的打印都可以和上面的描述对应

上一篇下一篇

猜你喜欢

热点阅读