Swift 类
2017-09-01 10:55
106 查看
Swift 类是构建代码所用的一种通用且灵活的构造体。
我们可以为类定义属性(常量、变量)和方法。
与其他编程语言所不同的是,Swift 并不要求你为自定义类去创建独立的接口和实现文件。你所要做的是在一个单一文件中定义一个类,系统会自动生成面向其它代码的外部接口。
定义属性用于存储值
定义方法用于提供功能
定义附属脚本用于访问值
定义构造器用于生成初始化值
通过扩展以增加默认实现的功能
符合协议以对某类提供标准功能
(2)、与结构体相比,类还有如下的附加功能:
继承允许一个类继承另一个类的特征
类型转换允许在运行时检查和解释一个类实例的类型
解构器允许一个类实例释放任何其所被分配的资源
引用计数允许对一个类的多次引用
实例化类:
输出:
以上程序执行输出结果为:
为了能够判定两个常量或者变量是否引用同一个类实例,Swift 内建了两个恒等运算符:
输出:
(2)、
输出:
我们可以为类定义属性(常量、变量)和方法。
与其他编程语言所不同的是,Swift 并不要求你为自定义类去创建独立的接口和实现文件。你所要做的是在一个单一文件中定义一个类,系统会自动生成面向其它代码的外部接口。
一、类和结构体对比
(1)、Swift 中类和结构体有很多共同点。共同处在于:定义属性用于存储值
定义方法用于提供功能
定义附属脚本用于访问值
定义构造器用于生成初始化值
通过扩展以增加默认实现的功能
符合协议以对某类提供标准功能
(2)、与结构体相比,类还有如下的附加功能:
继承允许一个类继承另一个类的特征
类型转换允许在运行时检查和解释一个类实例的类型
解构器允许一个类实例释放任何其所被分配的资源
引用计数允许对一个类的多次引用
二、语法
Class classname { Definition 1 Definition 2 …… Definition N }
三、类定义
class student{ var studname: String = "" var mark: Int = 0 var mark2: Int = 0 }
实例化类:
let studrecord = student()
实例
class studentMarks { var mark = 300 } let marks = studentMarks() print("成绩为 \(marks.mark)")
输出:
成绩为 300
四、作为引用类型访问类属性
类的属性可以通过 . 来访问。格式为:实例化类名.属性名:class studentMarks { var mark1 = 300 var mark2 = 400 var mark3 = 900 } let marks = studentMarks() print("Mark1 is \(marks.mark1)") print("Mark2 is \(marks.mark2)") print("Mark3 is \(marks.mark3)")
以上程序执行输出结果为:
Mark1 is 300 Mark2 is 400 Mark3 is 900
五、恒等运算符
因为类是引用类型,有可能有多个常量和变量在后台同时引用某一个类实例。为了能够判定两个常量或者变量是否引用同一个类实例,Swift 内建了两个恒等运算符:
恒等运算符 | 不恒等运算符 |
---|---|
运算符为:=== | 运算符为:!== |
如果两个常量或者变量引用同一个类实例则返回 true | 如果两个常量或者变量引用不同一个类实例则返回 true |
实例:
(1)、class SampleClass: Equatable { let myProperty: String init(s: String) { myProperty = s } static func ==(lhs: SampleClass, rhs: SampleClass) -> Bool { return lhs.myProperty == rhs.myProperty } } let spClass1 = SampleClass(s: "Hello") let spClass2 = SampleClass(s: "Hello") if spClass1 === spClass2 {// false print("引用相同的类实例") } if spClass1 !== spClass2 {// true print("引用不相同的类实例") } if spClass1 == spClass2 {// false print("具有相同的属性") } if spClass1 != spClass2 {// true print("具有不通相同的属性") }
输出:
引用不相同的类实例 具有相同的属性
(2)、
class SampleClass: Equatable { let myProperty: String init(s: String) { myProperty = s } static func ==(lhs: SampleClass, rhs: SampleClass) -> Bool { return lhs.myProperty == rhs.myProperty } } let spClass1 = SampleClass(s: "Hello") let spClass2 = spClass1 if spClass1 === spClass2 {// false print("引用相同的类实例") } if spClass1 !== spClass2 {// true print("引用不相同的类实例") } if spClass1 == spClass2 {// false print("具有相同的属性") } if spClass1 != spClass2 {// true print("具有不通相同的属性") }
输出:
引用相同的类实例 具有相同的属性
相关文章推荐
- Swift快速入门笔记
- swift论坛正式上线
- Swift开发UITableView常用的一些细节知识点介绍
- swift 命令行
- 【swift】ios中生成二维码
- Swift3 隐藏状态栏
- Swift-11-委托模式
- OC 与Swift混合开发之相互调用
- openstack swift构建公有云
- Swift基础-0001
- Swift 解决循环引用问题
- 如何在Swift中调用C函数
- Swift 3.0 Preview 1更新内容中文翻译
- Flash资源共享库打包工具Swift-tool关于字体加载的问题
- Swift基础-0003
- swift3-省、市、区地址选择器,plist格式数据(UIPickerView)
- swift手记-4
- swift -单糖app
- openstack Swift Grizzly TypeError: dist must be a Distribution instance
- SWIFT中获取当前经伟度