美文网首页
04-OC、继承

04-OC、继承

作者: amoLink | 来源:发表于2017-04-25 16:53 被阅读37次

一、基本概念

继承:通过拓展或修改既有类来定义新类的方法称为继承。其中既有类称为父类,新类称为子类
  程序中的“对象”和现实中的没什么区别,子女继承父母,自然就拥有父母的所有资源,子类继承父类同样拥有父类的方法和成员变量。

继承示意图

这里猫类和狗类继承自动物类,白猫类和黑猫类继承自猫类。

  • 继承的好处:
    • 抽取出重复的代码;
  • 建立类和类键的联系。
  • 继承的缺点:
    • 代码的耦合性变强。

二、OC 中的继承

@interface Animal : NSObject
// Animal 类继承自 NSObject 类,获得 NSObject 类的方法。
@end

OC 是单继承语言。其中** NSObject **基本上是所有类的根类。

三、继承的使用注意

  • 编译器从上往下执行,所以子类前面至少要有父类的声明。
  • OC 不允许子类和父类拥有相同名称的成员变量名。
  • OC 中子类可以拥有和父类相同名称的方法,子类调用时会优先调用自身的该方法。
    重写:即子类重新实现了父类中的方法,覆盖父类的实现。

示例:Person 类继承 NSObject 类,Student 类继承 Person 类。

示例

  创建一个 Student 类型的对象 Student *****stu = [ [ Student alloc ] init];
此时会把 Student 类及其父类加载进内存。

  • 每个类中都有一个** super class 指针,该指针指向其父类。对象有一个 isa **指针指向该对象的类。

四、继承和组合

  • 继承适用的场合:
  • 当两个类拥有相同的属性和方法时,就可以将相同的属性和方法抽取到一个父类中。
  • 当 A 类完全拥有 B 类的部分属性和方法是,可以考虑让 B 类继承 A 类,也可以考虑使用组合。

继承:### 是 xxx,如 狗 是 动物,可以让狗继承动物类。
组合:### 拥有 xxx,如学生有书,可以让书这个类 作为学生的属性。

五、super 关键字

在子类中重写方法时,super 关键字可以让调用者跳过这一层而调用父类中的方法。

  • 作用:
  • 直接 调用父类中的某一方法。
  • super 处在对象方法中,就是调用父类对应的对象方法;处在类方法中,就是调用父类对应的类方法。
  • 使用场景:子类在重写父类方法时,想要保留父类的一些行为。

待续。。。

相关文章

  • 04-OC、继承

    一、基本概念 继承:通过拓展或修改既有类来定义新类的方法称为继承。其中既有类称为父类,新类称为子类。程序中的“对象...

  • iOS底层原理探究05-类的底层原理isa链&继承链&类的内存结

    isa指向分析 通过《iOS底层原理探究04-OC对象的本质&联合体位域&isa分析》[https://www.j...

  • 04-OC类的加载过程

    OC底层原理探索文档汇总[https://www.jianshu.com/p/04883ea4f5aa] 前面三篇...

  • 04-OC中KVC的底层原理

    KVC本质 KVC的全称是Key-Value Coding,俗称"键值编码",可以通过一个key来访问某个属性 K...

  • 继承 继承

    属性拷贝 继承不单单能通过原型链实现,也能通过其他方式实现,属性拷贝就是其中一种方法。 通过属性拷贝也能实现继承子...

  • 继承(单继承,多继承)

    将共性的内容放在父类中,子类只需要关注自己特有的内容 python中所有的内容都是对象,所有的对象都直接或间接继承...

  • OC底层原理04-OC对象内存优化

    本文将结合我的另外一篇文章 Object-C底层原理03-结构体内存对齐[https://www.jianshu....

  • js继承方式

    类式继承 构造函数继承 组合继承 类式继承 + 构造函数继承 原型式继承 寄生式继承 寄生组合式继承 寄生式继承 ...

  • Python-学习之路-08 OOP -02

    单继承和多继承 单继承:每个类只能继承一个类 多继承:每个类可以继承多个类 单继承的多继承的优缺点 菱形继承/钻石...

  • 原型相关(二)

    1.继承 继承方式:接口继承(只继承方法签名)实现继承(继承实际的方法)ECMAScript只支持实现继承,并且主...

网友评论

      本文标题:04-OC、继承

      本文链接:https://www.haomeiwen.com/subject/hjivzttx.html