继承

作者: 越天高 | 来源:发表于2019-02-20 21:59 被阅读0次

1.继承基本概念

交通工具类是一个基类(也称做父类),通常情况下所有交通工具所共同具备的特性,如速度与额定载人的数量

按照生活常规,我们来继续给交通工具来细分类的时候,我们会分别想到有汽车类和飞机类等,汽车类和飞机类同样具备速度和额定载人数量这样的特性,而这些特性是所有交通工具所共有的,那么就可以让汽车或飞机类继承交通工具类,这样当建立汽车类和飞机类的时候我们无需再定义交通工具类(基类)中已经有的成员和方法,而只需要􏰁述汽车类和飞机类所特有的特性即可。

飞机类和汽车类的特性是由在交通工具类原有特性基础上增加而来的,那么飞机类和汽车类就是交通工具类的派生类(也称做子类)。以此类推,层层递增, 这种子类获得父类特性的概念就是继承

2.OC中的继承关系

jcjg3.png
  • B类继承A类,那么B类将拥有A类的所有属性和方法,此时我们说A类是B类的父类,B类是A类的子类

  • C类继承B类,那么C类将拥有B类中的所有属性和方法,包括B类从A类中继承过来的属性和方法,此时我们说B类是C类的父类,C类是B类的子类

  • 注意:

    1. 基类的私有属性能被继承,不能在子类中访问。
    2. OC中的继承是单继承:也就是说一个类只能一个父类,不能继承多个父类
    3. 子类与父类的关系也称为is A(是一个)关系,我们说 子类is A父类,也就是子类是一个父类,比如狗类继承动物类,那么我们说狗is A动物,也就是狗是一个动物。在如汽车继承交通工具,那么们说汽车is A交工工具,也就是汽车是一个交通工具
    4. 继承的合理性:引用《大话西游》里的一句话来描述继承的。“人是人他妈生的,妖是妖他妈生的!”

3.OC中如何实现继承

在声明子类的时候,在子类名称后面通过:父类名称方式来实现继承

@interface 子类名称 : 父类名称

@end

继承相关特性

1.方法重写

  • 在子类中实现与父类中同名的方法,称之为方法重写;
  • 重写以后当给子类发送这个消息的时候,执行的是在子类中重写的那个方法,而不是父类中的方法。
  • 如果想在子类中调用被子类重写的父类的方法,可以通过super关键字
  • 使用场景:当从父类继承的某个方法不适合子类,可以在子类中重写父类的这个方法。

2.继承中方法调用的顺序

1、在自己类中找
2、如果没有,去父类中找
3、如果父类中没有,就去父类的父类中
4、如果父类的父类也没有,就还往上找,直到找到基类(NSObject)
5、如果NSObject都没有就报错了, 如果找到了就执行这个方法,就不再往后查找了

3.继承的注意事项

  • 子类不能定义和父类同名的成员变量,私有成员变量也不可以;因为子类继承父类,子类将会拥有父类的所有成员变量,若在子类中定义父类同名成员变量 属于重复定义。

  • OC类支持单一继承,不支持多继承;也就是说一个类只能有一个直接父类

  • OC类支持多层继承 ,如下图所示


    djc.png

相关文章

  • 继承 继承

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

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

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

  • js继承方式

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

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

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

  • 原型相关(二)

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

  • 继承

    继承的引入和概述 继承案例和继承的好处 继承的弊端 Java中继承的特点 继承的注意实现和什么时候使用继承 继承中...

  • Java面向对象三大特性之继承

    继承 一、继承的特点 Java只支持单继承单继承 多继承 单继承、多继承优缺点①单继承优点:提高了代码的复用性,让...

  • 7、面向对象的程序设计3(《JS高级》笔记)

    三、继承 许多OO语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际方法。由...

  • 【重学前端】JavaScript中的继承

    JavaScript中继承主要分为六种:类式继承(原型链继承)、构造函数继承、组合继承、原型式继承、寄生式继承、寄...

  • js之继承

    文章主讲 JS 继承,包括原型链继承、构造函数继承、组合继承、寄生组合继承、原型式继承、 ES6 继承,以及 多继...

网友评论

    本文标题:继承

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