美文网首页
IOS_基类与协议的区别

IOS_基类与协议的区别

作者: 冰冰凉3 | 来源:发表于2018-12-17 18:33 被阅读0次

相同点

  1. 协议和抽象基类都需要子类重写方法
  2. 都不可以直接实例化

不同点

  1. 抽象基类可以抽取高度相同的方法避免重写多写(一般成为默认行为),所以抽象基类重复使用的代码部分可以不重写;
  2. 抽象基类可以有私有方法(基于第2条,可以抽取高度相同的方法);协议作为对外接口,一般都是公开方法
  3. 协议没有实现,都是声明;抽象基类可以有实现,需要子类重写的方法请抛异常或者断言给使用者.
  4. 抽象基类和子类是继承关系,协议和类是声明关系
  5. 由于OC中类继承是单继承,而可以同时使用多个协议,所以各有各的优点.
  6. 如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象(面向对象三大特性之一),接口变量必须指向实现所有接口方法的类对象(如:** id<Eatting,running> **)

协议

协议俗称“接口”,定义协议一般是几个不同的类型实现同一个方法。
比如 人、鱼、青蛙都要游泳,每个类型的游泳本身都不相同,应该将“游泳”定义为一个协议,每个类均要实现游泳的功能。
虚拟类适合于有共通实现属性的类,但是又存在些许差异。

例如:cell和cellmodel本身都适合于定义虚拟基础类,但是 cellcontroller 需要定义为协议方法

相关文章

  • IOS_基类与协议的区别

    相同点 协议和抽象基类都需要子类重写方法 都不可以直接实例化 不同点 抽象基类可以抽取高度相同的方法避免重写多写(...

  • Swift

    背景 我们写一个类或者协议的时候经常会继承一个基类,然而什么时候该继承哪个基类呢,OC 与Swift 的基类又有哪...

  • 14 协议、闭包和懒加载

    1. 协议 1.1 协议的格式 协议的定义方式与类,结构体,枚举的定义都非常相似 遵守协议的格式 1.2 协议的基...

  • 2020-05-22

    1.python的特征: 2.装饰和元类区别: 3.装饰与元类区别实例: 4.类协议:元类的奥秘 5.如何产生的新...

  • MAP总结

    HashMap和Hashtable的区别 1.基类 HashMap基于AbstractMap Hashtable基...

  • UIAppearence协议

    UIAppearence协议 基类是协议 appearence换肤 不是所有的属性都能换肤,需...

  • GIT实战

    git实战 git与svn的区别 git核心命令使用 git底层实现原理剖析 基于git通信协议搭建git私服 基...

  • NSObject协议及本身详解

     NSObject作为一个基类,这个类遵守了NSObject协议,并且实现了NSObject协议里的所有方法,所以...

  • iOS_进程与线程(多进程与多线程)

    iOS_进程与线程(多进程与多线程)

  • tcp和udp

    TCP和UDP的区别(转) TCP****协议与UDP协议的区别 首先咱们弄清楚, TCP 协议和 UCP ...

网友评论

      本文标题:IOS_基类与协议的区别

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