位置: 编程技术 - 正文

Swift中的协议(protocol)学习教程(swift协议范型)

发布时间:2024-02-27

推荐整理分享Swift中的协议(protocol)学习教程(swift协议范型),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:swift存储协议,swift property,swift中的协议属性,swift协议和oc协议的区别,swift 协议,swift协议扩展,swift协议扩展,swift协议范型,内容如对您有帮助,希望把文章链接给更多的朋友!

一、引言

协议约定了一些属性与方法,其作用类似Java中的抽象类,Swift中类型通过遵守协议来实现一些约定的属性和方法。Swift中的协议使用protocol关键字来声明。Swift中的协议还有一个十分有意思的特性,协议可以通过扩展来实现一些方法和附加功能。

二、在协议中定义属性和方法

协议中定义的属性只约定名称和类型,在具体类型的实现中,其可以是存储属性也可以是计算属性,协议中还需要指定属性是可读的还是可读可写的。示例代码如下:

有一点需要注意,协议中的可读并不是只读,协议中的属性约定成可读可写,则在实现时,这个属性必须是可读可写的,但是如果协议中约定成可读的,则此属性可以是只读的也可以是可读可写的,看具体的实现。

协议中约定的方法可以是实例方法也可以是类型方法,示例如下:

Swift中的协议(protocol)学习教程(swift协议范型)

同样,协议中也可以对构造方法进行定义约定。

三、协议的特点

协议中虽然没有任何属性和方法的实现,但是其仍然可以当做类型来使用,在函数参数、返回值中应用广泛,示例如下:

协议作为类型这种用法另一个应用点是在集合类型中,协议可以作为所有遵守此协议的集合类型。

协议可以像其他类型一样进行继承,子协议将自动拥有父协议约定的属性和方法。协议也可以通过class关键字来定义只有类可以进行遵守,示例如下:

协议既然可以像其他类型一样进行使用,当然它也可以使用is,as&#;,as!进行检查和转换,关于is,as的更多用法可以查看Swift关于类型转换的内容。

协议也可定义其中的属性或方法为可选的,即遵守此协议的类可以实现也可以不实现可选的属性和方法,然而,声明为可选的需要此协议为@objc类型的,示例如下:

Swift中的协议还有一个十分重要的特性,其可以通过扩展来进行属性、方法以及下标的实现。这对于一些通用类的方法十分方便,这相当于所有继承此协议的类都默认实现了这样的方法,示例如下:

Python中super()函数简介及用法分享 首先看一下super()函数的定义:super([type[,object-or-type]])Returna**proxyobject**thatdelegatesmethodcallstoa**parentorsibling**classoftype.返回一个代理对象,这个对象负责将方法

Python编写简单的HTML页面合并脚本 最近写一个BootStrap页面...因为功能需要所以决定一个页面解决所有问题,然后用jQuery来动态显示功能....然而这样做的话页面会相当庞大,一堆隐藏模态

Python中的异常处理相关语句基础学习笔记 异常是指因为程序出现了错误而在正常控制流以外采取的行动,其分为两个阶段,第一阶段是引发异常的错误,当系统检测到错误并且意识到异常条件

标签: swift协议范型

本文链接地址:https://www.jiuchutong.com/biancheng/386963.html 转载请保留说明!

上一篇:Python中多线程的创建及基本调用方法(python多线程技术)

下一篇:Python中super()函数简介及用法分享(super函数python)

  • 源泉扣税什么意思
  • 一般计税方法是全额计税吗
  • 银行承兑汇票 托收
  • 酒店出租会议室增值税税率
  • 员工补充医疗保险报销范围
  • 网络公司可以开展什么业务
  • 个人股权转让协议书范本合同
  • 机械租赁费怎么算
  • 避税方法一般有几种
  • 购进货品未取得发票如何处理
  • 跨年度销售费用如何调账
  • 按工人工资比例结转制造费用的科目
  • 预收房款缴所得税会计分录怎么写?
  • 企业一般户可以扣税吗
  • 营改增后增加了什么征税项目
  • 股权转让 分期付款
  • 小微企业每年可以开多少发票北京
  • 退休人员返聘后辞退怎样补偿
  • 可供出售金融资产会计处理
  • 每季度不超过9万
  • 货物赔偿款会计分录
  • 棚户区改造贷款管理办法
  • 收到稳岗补贴计入哪个科目
  • 辞退补偿金怎么算n1吗
  • linux安装方式有
  • 施工企业自建自用的工程
  • agmservice.exe是什么
  • 2020年前端面试
  • php is_writable
  • iframe内嵌页面
  • 罗马湖在哪
  • php判断是手机端还是端口
  • php 字符串处理函数
  • 工程项目科学技术方法工具过程之间的关系
  • sed多个命令匹配条件格式
  • cookie from
  • 进口形式发票能证明商品是进口的吗
  • 年度结转增值税
  • phpcms api
  • 税法中对差旅费的处理
  • db2 日期查询
  • 企业的股息红利所得要交税吗
  • 建筑施工企业增值税税率调整时间
  • 长期挂账其他应付款违反了哪项制度
  • 公司进货厂家给开发票吗
  • 商标使用权入股要交税吗
  • 以他人名义投资该签订什么协议
  • 公司招待费用会计分录
  • 固定资产应计入什么账户
  • 应付账款余额为0怎么写
  • 现金流量表的编制基础是权责发生制
  • 什么是大病医疗救助
  • mysql中具体到删某一个数据
  • 在sqlserver数据库中,执行sql语句
  • mysqlgroupby用法解析详细
  • 关于月亮的诗句
  • 其他操作系统类型
  • xp系统磁盘检查进不去
  • 双系统麻烦吗
  • 如何用dos破解wifi
  • win7系统怎样
  • windows10稳定版本
  • 第一个闹钟
  • 金庸笔下十大最受欢迎人物
  • opengl绘制坐标轴
  • flask完整项目实例
  • JavaScript中的方法名不区分大小写
  • nodejs深入浅出pdf百度云
  • shell脚本实现文件移动、复制等操作
  • javascript闭包运行原理
  • js类库编写
  • javascript教程
  • js图片预览
  • 个体税务申报时间怎么填
  • 对税务机关的意见建议怎么写
  • 河北电子税务局网上登录
  • 杭州没有户口可以上幼儿园吗
  • 安徽省滁州市税务局地址
  • 山东省合格考密码
  • 上海纳税总额
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号