位置: 编程技术 - 正文

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

编辑:rootadmin

推荐整理分享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)

  • 报税申报不了
  • 什么情况下需要补牙
  • 消费税到底是什么
  • 公司开劳务发票几个点
  • 让渡资产使用权收入计入什么科目
  • 加工样品全流程总结
  • 电子承兑银行承兑
  • 货款为现金如何做记账账款凭证?
  • 高新技术企业如何融资
  • 960011115金税盘错误
  • 为什么债务利息不计入资本预算的范畴
  • 收到银行承兑汇票计入什么科目
  • 应纳税所得额是开票金额吗
  • 发票过期作废不了怎么办
  • 贷款余额反映了什么
  • 红字冲回怎么做账
  • 转销和冲销是什么意思
  • 应付账款转营业外收入需要什么条件
  • 转出未交增值税借方余额表示什么
  • 电子汇款收入是什么意思
  • 社保打入其他公司代扣分录怎么做?
  • 连接另外一个设备
  • 微软输入法中文输入卡顿
  • 关于员工表彰奖励的方案
  • 华为p50e手机价格及参数
  • php数组函数有哪些
  • 工商年报缴费基数是什么意思
  • 招投标公司需要什么条件
  • apache去掉php后缀
  • 劳务费开发票后还需要交个税吗
  • php的implode
  • PHP中使用什么关键字声明变量的作用域为全局
  • segment anything model模型 需要的配置
  • html5简单吗
  • 推荐 4个有趣实践作业
  • 【AI大比拼】文心一言 VS ChatGPT-4
  • web核心的三个标准
  • 用more命令查看文件内容
  • python安装后找不到了
  • 农药普通发票可以抵扣
  • 会计怎么计算
  • 增值税普通发票查询真伪
  • 一般纳税人购进免税农产品如何抵扣进项税额
  • 接手前往年的银行余额不平怎么办?
  • mongodb局域网访问
  • 税务安全证书应用客户端不成功是什么意思
  • 合并抵消分录影响母公司总分类账吗
  • 营改增后建筑业怎么开票
  • 行政事业单位银行开户规定
  • 开出去的发票没有进项发票应如何核算成本?
  • 微信提现手续费1000扣多少
  • 先付款后开票还是先开票后付款
  • 弃置费用摊销为什么在贷方增加
  • 以前年度不合规发票如何调年报
  • 在建工程进项税额抵扣规定
  • 现销和赊销加一起等于销售收入吗
  • 进口车购置税多少个点
  • 会计帐本分为哪几类
  • mysql中sum的用法
  • 如何关闭系统快捷键
  • 生产环境如何对linux进行合理分区
  • 笔记本开机白屏进不了桌面
  • linux中的find的用法
  • speedmgr.exe - speedmgr是什么进程 有什么用
  • windows xp.
  • 微软在中国的代理公司
  • linux的命令行指的是什么
  • windows10窗口设置在哪
  • jquery validation plugin
  • 一行代码5个bug
  • android遇到的难题
  • Python编程中的逻辑与控制
  • 法线贴图使用
  • jquery 遍历
  • android设计模式书籍
  • Android ExpandableListView的使用技巧
  • Android-Universal-Image-Loader最新框架解析
  • 税务稽查总队
  • 包头市税务局赵文胜
  • 税务总局在贯彻落实意见任务分工中
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设