黑马程序员技术交流社区

标题: self和super 不吐不快 [打印本页]

作者: 风中一场梦    时间: 2015-3-1 20:50
标题: self和super 不吐不快
       在推荐主题上看到有人悬赏self 和super的区别,正巧小弟之前看一个视频看到了,满怀信心想赚黑马币,可惜早被人捷足先登一步。准备好的答案就在此发帖自怜吧。
       self 先从子类调用函数,再从父类找
       super  调用父类函数
比如 父类 f 定义了函数 play()  集成 f 的子类 a 也定义的函数 play()  
那么 在子类 a 使用 self 则调用 a的 play()函数 如 a 未定义 play 则调用 f 的 play()
    使用super 则调用 f 的 play()
作者: 15021367785    时间: 2015-3-2 01:24
善意的提醒一下,请重新看一下 方法 和函数的区别。 self 和super都是调用方法的,不是函数
作者: 韩胜辉    时间: 2015-3-2 08:02
楼上正解
作者: keeganlee    时间: 2015-3-2 08:12
我去 方法和函数有区别吗? 据我所知 貌似就是叫法不同而已 有点区别可能是类的函数叫方法,楼主说的没问题
作者: 风中一场梦    时间: 2015-3-2 08:43
15021367785 发表于 2015-3-2 01:24
善意的提醒一下,请重新看一下 方法 和函数的区别。 self 和super都是调用方法的,不是函数 ...

谢谢亲,:)
作者: 风中一场梦    时间: 2015-3-2 08:45
15021367785 发表于 2015-3-2 01:24
善意的提醒一下,请重新看一下 方法 和函数的区别。 self 和super都是调用方法的,不是函数 ...

谢谢亲,学到了:)
作者: 风中一场梦    时间: 2015-3-2 08:51
keeganlee 发表于 2015-3-2 08:12
我去 方法和函数有区别吗? 据我所知 貌似就是叫法不同而已 有点区别可能是类的函数叫方法,楼主说的没问题 ...

还是有区别的,方法是oc独有的。在@interface和@end之间声明,在@implementation和@end之间定义。分为类方法和对象方法。类方法只能由类来调用,对象方法只能由方法来调用。函数能写在文件中的任意位置(@interface和@end之间除外)。函数内部不能直接通过成员变量名访问某个对象的成员变量。可以说方法是专门为类和对象设计的特殊函数。大家一起努力,谢谢亲
作者: keeganlee    时间: 2015-3-2 08:58
风中一场梦 发表于 2015-3-2 08:51
还是有区别的,方法是oc独有的。在@interface和@end之间声明,在@implementation和@end之间定义。分为类 ...

你说父类定义的函数,不定义在@interface和@implement中你定义在哪?
作者: 15021367785    时间: 2015-3-2 09:31
keeganlee 发表于 2015-3-2 08:58
你说父类定义的函数,不定义在@interface和@implement中你定义在哪?

亲,请先去看视频。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2