• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >swift > 深入解析Swift语言中的协议

深入解析Swift语言中的协议

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了swift语言,swift语言教程,swift语言下载,swift语言开发工具,swift语言实战入门等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

协议为方法,属性和其他要求的功能提供了一个蓝本。它只是描述了方法或属性的骨架,而不是实现。方法和属性实现还可以通过定义类,函数和枚举完成。协议的一致性是指方法或属性满足协议的要求。

语法
协议也遵循类似类,结构和枚举的语法:
protocol SomeProtocol {
    // protocol definition
}
</div>
协议在类,结构或枚举类型命名声明。单个和多个协议的声明也是可以的。如果多个协议规定,它们必须用逗号分隔。
struct SomeStructure: Protocol1, Protocol2 {
    // structure definition
}
</div>
当一个协议在超类中定义,协议名称应遵循命名在超类之后。
class SomeClass: SomeSuperclass, Protocol1, Protocol2 {
    // class definition
}
</div>
属性和方法的要求
协议用于指定特定类型的属性或属性的实例。它仅指定类型或实例属性单独而不是指定它是否是一个存储或计算属性。另外,它是用来指定的属性是否为“可获取'或'可设置”。

属性要求由 “var” 关键字作为属性变量声明。 {get set} 使用它们类型声明后声明属性可获取和可设置。 可获取是由它们的类型{get}取属性声明后提及。
protocol classa {
  
   var marks: Int { get set }
   var result: Bool { get }
  
   func attendance() -> String
   func markssecured() -> String
  
}

protocol classb: classa {
  
   var present: Bool { get set }
   var subject: String { get set }
   var stname: String { get set }
  
}

class classc: classb {
   var marks = 96
   let result = true
   var present = false
   var subject = "Swift Protocols"
   var stname = "Protocols"
  
   func attendance() -> String {
      return "The \(stname) has secured 99% attendance"
   }
  
   func markssecured() -> String {
      return "\(stname) has scored \(marks)"
   }
}

let studdet = classc()
studdet.stname = "Swift"
studdet.marks = 98
studdet.markssecured()

println(studdet.marks)
println(studdet.result)
println(studdet.present)
println(studdet.subject)
println(studdet.stname)
</div>
当我们使用 playground 运行上面的程序,得到以下结果。

98
true
false
Swift Protocols
Swift
</div>

不同变形方法要求
protocol daysofaweek {
   mutating func print()
}

enum days: daysofaweek {
   case sun, mon, tue, wed, thurs, fri, sat
   mutating func print() {
      switch self {
      case sun:
         self = sun
         println("Sunday")
      case mon:
         self = mon
         println("Monday")
      case tue:
         self = tue
         println("Tuesday")
      case wed:
         self = wed
         println("Wednesday")
      case mon:
         self = thurs
         println("Thursday")
      case tue:
         self = fri
         println("Friday")
      case sat:
         self = sat
         println("Saturday")
      default:
         println("NO Such Day")
      }
   }
}

var res = days.wed
res.print()
</div>
当我们使用 playground 运行上面的程序,得到以下结果。

Wednesday
</div>

初始化程序要求
Swift 允许用户初始化协议遵循类似于正常初始化类型的一致性。

语法
protocol SomeProtocol {
   init(someParameter: Int)
}
</div>
示例
protocol tcpprotocol {
   init(aprot: Int)
}
</div>
协议初始化程序要求类实现
指定或初始化便捷允许用户初始化协议来预留“required”关键字,以符合其标准。
class SomeClass: SomeProtocol {
   required init(someParameter: Int) {
      // initializer implementation statements
   }
}

protocol tcpprotocol {
   init(aprot: Int)
}

class tcpClass: tcpprotocol {
   required init(aprot: Int) {
   }
}
</div>
协议一致性保证所有子类显式或继承实现“required”修辞符。

当一个子类覆盖其超类的初始化必须由“override”修饰符关键字指定。
protocol tcpprotocol {
   init(no1: Int)
}

class mainClass {
   va

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Swift 教程
  • Swift 环境搭建
  • Swift中闭包实战案例详解
  • Swift操作Quartz 2D进行简单的绘图与坐标变换的教程
  • Swift语言中的一些访问控制设置详解
  • 深入解析Swift语言中的协议
  • 深入解析Swift语言编程中的可选链
  • 解析Swift语言面相对象编程中的继承特性
  • 详解Swift语言中的类与结构体
  • 详解Swift语言的while循环结构

相关文章

  • 2017-05-28在一个项目中同时使用Swift和Objective-C代码混合编程的方法
  • 2017-05-28Swift版使用ThPullRefresh实现下拉上拉刷新数据
  • 2017-05-28IOS 实现简单的弹幕功能
  • 2017-05-28Swift语言实现地图坐标弹跳动画
  • 2017-05-28struts2实现文件下载功能
  • 2017-05-28深入讲解C语言编程中volatile修饰符的作用
  • 2017-05-28Swift流程控制之循环语句和判断语句详解
  • 2017-05-28Swift中的指针操作详解
  • 2017-05-28MySQL+SSM+Ajax上传图片问题
  • 2017-05-28Swift中字典与JSON转换的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Swift 字符串
    • Swift实现无限轮播效果
    • swift 可选型的使用详解
    • Swift教程之字符串和字符详解
    • Mybatis传list参数调用oracle存储过程的解决方法
    • Swift语言实现地图坐标弹跳动画
    • 深入解析Swift中switch语句对case的数据类型匹配的支持
    • 如何设计一个秒杀系统
    • Swift的74个常用内置函数介绍
    • Swift编程中的初始化与反初始化完全讲解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有