super和self关键字的区别

  • super在类方法中, 一定会调用父类的类方法
    super在对象方法中, 一定会调用父类的对象方法
    可以利用super在任意方法中调用父类中的方法

self关键字如何使用?

  • 如果self在对象方法中, 那么self就代表调用当前对象方法的那个对象
  • 如果self在类方法中, 那么self就代表调用当前类方法的那个类
  • 总结:
    • 我们只用关注self在哪一个方法中 , 如果在类方法那么就代表当前类, 如果在对象方法那么就代表"当前调用该方法的对象"

super使用场景?
答: 子类重写父类的方法时想保留父类的一些行为
也就是说如果子类在调用的父类的某个方法的时候想要保留父类中的一些设置的话,就需要调用父类的该方法用于保存父类中添加的一些默认的(原有的)一些属性的设置

重点注意:
  • class: 是一个获取的方法,用来获取方法调用者类
    superclass: 是一个获取的方法,用来获取方法调用者的 父类
    super:注意super不是一个指针,super只是编译指示器
    super: 仅仅是让方法调用者去调用父类方法,它只是一个编译器指令,而不是一个指针(其实本质还是子类对象本身,而不是父类对象).一定要注意:super其实就是子类对象(self本身),而不是父类对象(super它是一个编译指示器,告诉编译器调用自己的父类的相应方法.如果self表示的对象那么super表示的就是调用父类的对象方法,如果self表示的是当前类,那么super表示的就是调用父类的类方法)

//注意:self本身就是一个强指针,而super不是

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

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,857评论 0 9
  • 20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...
    iOS_恒仔阅读 2,337评论 1 6
  • static关键字 (1)如果没有static会怎样? 定义Person类姓名、年龄、国籍,说话行为多个构造,重载...
    多了去的YangXuLei阅读 589评论 0 6
  • 清晨 第一件事情 告诉你 最近的那个梦境 梦在百合花的顶端 一汪永恒的 未曾触动的甜恬 些许 模糊的丸澜 鼓着蝴蝶...
    一默1520阅读 317评论 0 6
  • 虽然今天中午走得太快,肚子有点疼,还是坚持做晚上的运动,有些事情坚持不一定成功,不坚持一定不会成功
    刘静丽阅读 126评论 0 1