苹果新的编程语言 Swift 语言进阶(十五)--协议

      协议定义了适合某个特定任务或功能需要的方法、属性和其它需求的一个蓝图。协议本身不提供这些需求的实现,它只是描述了一个任务或功能实现的蓝图。

      协议与java 语言中的接口定义类似,都是描述了一个实现可以干什么,而本身却不包含任何实现。与接口不同的是swift语言定义的协议可以被一个类、结构、或者枚举采用,来提供协议规定需求的实际实现,而java 语言的接口只能被类实现。

      满足一个协议需求的任何类型(即实现了该协议规定需求)被称为符合该协议。

      协议中规定的需求可以是实例属性、实例方法、类型方法、操作符、下标方法等。

1.1 协议语法

     协议的定义语法与类、结构和枚举类型类似,以protocol关键字来指示一个协议,并在大括号中规定协议的每一个需求。

protocol SomeProtocol {

   // protocol definition goes here

}  

     一个采用某些协议的特定类型在定义中声明它采用的协议,语法如下:

   struct SomeStructure: FirstProtocol, AnotherProtocol {

   // structure definition goes here

        }

     与接口类似,某个类型可以采用(符合)多个协议。类型采用的每个协议之间用逗号来分割,类型名与协议名之间用冒号分割。

     如果一个类有超类,把它的超类名放在它采用的协议名前面,并以一个逗号分割:

 class SomeClassSomeSuperclass,FirstProtocol,AnotherProtocol {

   // class definition goes here

}

 1.2  协议需求项定义

   1) 属性需求

        一个协议中的一个属性需求仅对需要属性的属性名和类型进行规定,而不规定这些属性是否是一个存储属性或者是一个计算属性,因此只要一个类型提供一个和该属性需求规定的属性名和类型相同的一个实例属性或者一个类型属性,则该类型就符合该协议规定的这条属性需求。

         协议的属性需求也必须规定每个属性是只读的或者是可读写的。

         如果一个协议中一个属性需求规定是可读写的,那么该属性需求不能被一个常量存储属性或者一个只读的计算属性满足。如果协议的一个属性需求规定是只读的,那么该属性需求能被任何种类的属性满足。

         协议中的属性需求总是作为变量属性被声明(var)。可读写属性通过在类型声明后面添加{ get set }来指示,可读属性用{ get }来指示。协议中的实例属性需求规定如下:   

protocol SomeProtocol {

   var 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值