您的位置:首页 > 移动开发 > Swift

Swift 类

2017-09-01 10:55 106 查看
Swift 类是构建代码所用的一种通用且灵活的构造体。

我们可以为类定义属性(常量、变量)和方法。

与其他编程语言所不同的是,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