黑马程序员技术交流社区

标题: self和super的区别该怎样答啊 [打印本页]

作者: itheima2xy    时间: 2015-3-4 11:53
标题: self和super的区别该怎样答啊
我只知道super是用来调用父类方法的,self表示当前调用者。


作者: 悟饭    时间: 2015-3-4 13:17
C语言中的self和super关键字类似于Java中的this和super,super都是用来调用父类方法,self或this代表当前对象,调用当前对象的方法或属性,但有一点不同的是,self在当前对象中没有找到要调用的方法时,会再向父类中去找,如果找到就会调用父类的方法。
作者: itheima2xy    时间: 2015-3-5 09:57
悟饭 发表于 2015-3-4 13:17
C语言中的self和super关键字类似于Java中的this和super,super都是用来调用父类方法,self或this代表当前对 ...

谢谢解答!!!
作者: 悟饭    时间: 2015-3-5 10:07
itheima2xy 发表于 2015-3-5 09:57
谢谢解答!!!

互相帮助,共同进步!
作者: Micro    时间: 2015-3-5 11:08

本帖最后由 Micro 于 2015-2-6 22:21 编辑

self指向当前对象 ,在静态方法中,代表着当前类。在动态方法中,代表着调用该方法的当前对象。
super指当前对象的父类

******子类继承了父类。
但是没有实现 方法 method11
调用 [self method11]
和    [super method11]
有什么区别。
     当然有区别。
     当使用 self 调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找;而当使用 super 时,则从父类的方法列表中开始找,然后调用父类的这个方法。
     如果子类覆盖了父类的方法A,那你还想调用父类的方法A,只能用super,不能用self




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