位置: 编程技术 - 正文

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)

  • 什么是纳税义务人,在理解这一观念时应注意哪些问题
  • 投资款要不要交企业所得税
  • 向银行办理托收手续记什么科目
  • 农产品计算抵扣的税务政策
  • 投资公司的收入就是投资收益吗
  • 已经在网上申报学校可以改学校吗
  • 增值税发票不见了可以重开吗
  • 租金小规模开票税率
  • 勾选认证和扫描认证哪个好
  • 申报文件解密失败怎么办?
  • 全员劳动生产率是什么意思
  • 固定资产大修理怎么界定
  • 其他应付款的会计英文
  • 材料未到,货款尚未支付
  • 路由器死机的表现
  • 银行汇票银行不予受理的是
  • 鸿蒙系统怎么快速充电
  • 固定资产增值税税率
  • info.exe
  • synaudsrv.exe是什么
  • php的八种类型
  • 超市进货产品
  • 委托贷款账务处理
  • 旅游企业税务筹划
  • php模板引擎有哪些
  • 旋转 目标检测
  • 参加《2022 中国开发者影响力盛典》我的 4 重收获!
  • 计提预付账款会计分录
  • 不动产物权归属和内容的根据是什么?
  • 开票软件怎么增加开票员
  • 织梦系统网站搭建教程
  • 出让土地的土地出让金与抵押权
  • mongodb介绍
  • Linux sqlite3 基本命令
  • 产品淘汰造成的影响
  • 个人社保信息变更流程
  • 用友t3怎样设置权限
  • db2导出数据到excel
  • 资产处置开票填什么项目
  • 不征税收入与免税收入的区别是什么
  • 补充登记法的操作步骤
  • 货物已到发票未到怎么做账
  • 材料核销的依据
  • 广告制作需要交文化事业建设税
  • 结算本月应付职工工资,其中生产工人工资8000元
  • 话费充值发票可以开公司抬头吗
  • 缴纳工会筹备金应该记什么科目
  • 残疾人保障金的工资按实发还是应发
  • 公司三证合一是指哪三证
  • mysql类型varchar长度
  • 行转列sql函数
  • win7自带截图保存在哪个文件夹
  • xp电脑开机进入bios怎么办
  • ubuntu安装超详细教程
  • storm run off
  • win10系统怎么将桌面路径改为d盘
  • ubuntu debian
  • iphone制造成本
  • 重装系统 xp
  • macos 音量快捷键
  • linux与windows有哪些主要区别
  • linux 互传文件
  • linux 运行二进制文件
  • cocos2dx怎么用
  • 关于js的描述错误的是
  • angular实战
  • js array insert
  • 下列关于js的说法正确的是
  • 噩梦pv
  • javascript的主要内容
  • jquery的理解
  • 安卓手机图片缓存在哪
  • 异地如何拨打12393
  • 甘肃国家税务局官网
  • 国家税务总局查发票
  • 增值税和消费税申报对比不符怎么处理
  • 医保可以直接到税局买吗?
  • 海关税目表
  • 企业可以享受哪些政策优惠
  • 企业年度申报怎么修改
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设