美文网首页
多态、继承、拓展、分类

多态、继承、拓展、分类

作者: 稻春 | 来源:发表于2018-06-23 17:30 被阅读0次

多态

一、概念

多态:不同的对象以自己的方式响应消息的能力叫做多态。

在ios开发中,每个类都有自己对应的名字空间,这使得多态成为可能,不同类中定义相同的名字并不会冲突,类的实例方法和类方法有如下特点:

1、类的实例变量也位于该类独有的名字空间

2、类中的方法也同样为约该类独有的名字空间,所以两个不同类可以实现相同的方法

方法作为对象的接口,对象收到消息的名字就会调用方法的名字,同样的消息发给不同的对象,导致的操作并不相同

二、多态的优点

多态的主要好处就是简化了接口,多态可以使类和类之间可以重用一些习惯性的命名。

注意:oc支持方法名的多态,但不支持参数和操作符的多态

三、多态的实现

在Objective-C 中多态是由方法选取器selector来实现的,选取器的特点:

1、所有同名的方法拥有相同的选取器

2、所有的选取器是不一样的

SEL和@selector:

选择器的类型是SEL,@selector 指示符用来饮用选择器,返回类型是SEL;

@selector() 通过方法名来得到选取器

NSSelectorFromString()可以通过字符串来得到选取器

NSStringFromSelector()通过选取器来得到方法名

注:选取器确定的事方法名,而不是方法的实现。是多态性和动态绑定的基础

继承:继承在面向对象语言是非常重要的。在iOS中继承是单继承,既只能有一个父类。在继承中,子类可以使用父类的方法和变量,子类可以重写父类方法 。父类也可以访问子类的方法和成员变量;

分类: iOS中,当原有类的方法不够用时,这时候分类就出现了。category是在现有类的基础上添加新的方法,利用objective-c 的动态运行时分配机制,可以为现有类添加新方法。可以在分类中添加方法和成员变量,但是添加的成员变量不会自动生成setter和getter方法,需要在实现部分给出实现。

拓展: iOS中的extension就是匿名的分类,只有头文件没有实现文件。只能扩展方法,不能添加成员变量。扩展的方法只能在原类中实现。例如你扩展NSString,那么你只能在NSString的.m实现(这是不可能的),所以尽量少用扩展。用分类就可以了。

相关文章

  • 多态、继承、拓展、分类

    多态 一、概念 多态:不同的对象以自己的方式响应消息的能力叫做多态。 在ios开发中,每个类都有自己对应的名字空间...

  • 继承、分类与拓展

    一、继承 继承是指一个新类拥有被继承类(父类)的全部属性和方法。特点:1、代码重用,子类可以重写父类的方法,并用s...

  • 2020-05-16--Java--day09【继承、super

    1.继承 三大特征:封装,继承,多态 继承是多态的前提,没有继承就没有多态 继承的主要解决的问题就是:共性抽取 在...

  • iOS中多态,继承,分类,扩展

    多态 多态:不同对象以自己的方式响应相同的消息的能力叫做多态。程序中的多态:父类指针指向子类对象多态的原理 动态绑...

  • Lession08继承和多态

    继承 多态 继承练习

  • 继承、抽象类与接口

    第1节 继承 继承的概述 面向对象的三大特征:封装性、继承性、多态性。继承是多态的前提,如果没有继承,就没有多态。...

  • 周记二

    周一:今天学了继承和多态,继承有public继承、protected继承、private继承,多态和虚函数一对,抽...

  • 多态

    OC面向对象—多态 一、基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态。 在使用多态...

  • Python类和实例

    关键词:class 继承和多态:(object) 如果没有其他需要继承的类,则默认继承(object) 多态这里和...

  • 面向对象

    继承与多态

网友评论

      本文标题:多态、继承、拓展、分类

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