类及结构体 - Classes and Structures.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
类和结构体 - Classes and Structures 类和结构体 类和结构体是⼈们构建代码所⽤的⼀种通⽤且灵活的构造体。为了在类和结构体中实 现各种功能 我们必须要严格按照常量、变量以及函数所规定的语法规则来定义属性 和添加⽅法。 与其他编程语⾔所不同的是 Swift 并不要求你为⾃定义类和结构去创建独⽴的接⼜ 和实现⽂件。你所要做的是在⼀个单⼀⽂件中定义⼀个类或者结构体 系统将会⾃动 ⽣成⾯向其它代码的外部接⼜。 注意:通常⼀个类的实例被称为对象。然⽽在Swift 中 类和结构体的关 系要⽐在其他语⾔中更加的密切 本章中所讨论的⼤部分功能都可以⽤ 在类和结构体上。因此 我们会主要使⽤实例⽽不是对象。 类和结构体对⽐ Swift 中类和结构体有很多共同点。共同处在于: 定义属性⽤于存储值 定义⽅法⽤于提供功能 定义附属脚本⽤于访问值 定义构造器⽤于⽣成初始化值 通过扩展以增加默认实现的功能 符合协议以对某类提供标准功能 更多信息请参见 属性 ⽅法 下标脚本 初始过程 扩展 和协议。 与结构体相⽐ 类还有如下的附加功能: 继承允许⼀个类继承另⼀个类的特征 类型转换允许在运⾏时检查和解释⼀个类实例的类型 解构器允许⼀个类实例释放任何其所被分配的资源 引⽤计数允许对⼀个类的多次引⽤ 更多信息请参见继承 类型转换 初始化 和⾃动引⽤计数。 注意:结构体总是通过被复制的⽅式在代码中传递 因此请不要使⽤引 ⽤计数。 定义 类和结构体有着类似的定义⽅式。我们通过关键字class和struct来分别表⽰类和 结构体 并在⼀对⼤括号中定义它们的具体内容: class SomeClass { // class definition goes here } struct SomeStructure { // structure definition goes here } 注意:在你每次定义⼀个新类或者结构体的时候 实际上你是有效地定 义了⼀个新的 Swift 类型。因此请使⽤ UpperCamelCase 这种⽅式来命 名 (如 SomeClass 和SomeStructure等) 以便符合标准Swift 类型 的⼤写命名风格 (如String Int和Bool)。相反的 请使 ⽤lowerCamelCase这种⽅式为属性和⽅法命名 (如framerate和 incrementCount) 以便和类区分。 以下是定义结构体和定义类的⽰例: struct Resolution { var width = 0 var height = 0 } class ideoMode { var resolution = Resolution() var interlaced = false var frameRate = 0.0 var name: String? } 在上⾯的⽰例中我们定义了⼀个名为Resolution的结构体 ⽤来描述⼀个显⽰器的 像素分辨率。这个结构体包含了两个名为width和height的存储属性。存储属性是 捆绑和存储在类或结构体中的常量或变量。当这两个属性被初始化为整数0的时候 它们会被推断为Int类型。 在上⾯的⽰例中我们还定义了⼀个名为 ideoMode的类 ⽤来描述⼀个视频显⽰器 的特定模式。这个类包含了四个储存属性变量。第⼀个是分辨率 它被初始化为⼀个 新的Resolution结构体的实例 具有Resolution的属性类型。新 ideoMode实 例同时还会初始化其它三个属性 它们分别是 初始值为false(意为“non-interlaced video”)的interlaced 回放帧率初始值为0.0的frameRate和值为可选String的 属性会被⾃动赋予⼀个默认值nil 意为“没有name值” 因为它是⼀个 可选类型。 类和结构体实例 Resolution结构体和 ideoMode类的定义仅描述了什么是Resolution和 ideoM

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档