- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 型钢悬挑卸料平台监理实施细则.doc VIP
- 2025版最新建设工程强制性条文汇编.pdf VIP
- (高清版)DG∕TJ 08-2105-2022 行道树栽植与养护技术标准.pdf VIP
- 无人机组装与调试:多旋翼无人机飞控系统组装调试PPT教学课件.pptx VIP
- 检验检测机构资质认定质量手册和程序文件(质量记录表格汇编).doc VIP
- 建筑机电安装培训.pptx VIP
- 初三物理课件第十六章 3节 电阻课件初三物理课件第十六章 第3节 电阻课件.ppt VIP
- 低空经济产业园招商引资与项目管理.docx VIP
- 燃气经营安全重大隐患判定标准课件.pptx VIP
- 2025年学校基孔肯雅热防控工作预案(精选模板).docx
文档评论(0)