上一章Swift教程请查看:swift结构体
Swift中的类是灵活构造的构建块,与常量、变量和函数类似,用户可以定义类属性和方法。Swift为我们提供了这样的功能:在声明类时,用户不需要创建接口或实现文件,Swift允许我们创建类作为一个单一的文件和外部接口将创建默认一旦类初始化。
使用类的好处
- 继承从一个类获取到另一个类的属性
- 类型转换使用户能够在运行时检查类类型
- 反初始化器负责释放内存资源
- 引用计数允许类实例拥有多个引用
类和结构体的共同特征
- 定义属性来存储值
- 定义下标是为了提供对值的访问
- 方法初始化以改进功能
- 初始状态是由初始化器定义的
- 功能扩展到默认值之外
- 确认协议功能标准
语法
Class classname {
Definition 1
Definition 2
---
Definition N
}
类定义
class student {
var studname: String
var mark: Int
var mark2: Int
}
用于创建实例的语法
let studrecord = student()
例子:
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
class studentMarks {
var mark = 300
}
let marks = studentMarks()
print("Mark is \(marks.mark)")
作为引用类型访问类属性
类属性可由”.”访问,属性名由”.”分隔,在实例名之后。
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
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)")
类标识符
Swift中的类引用多个常量和变量指向一个实例,要了解指向特定类实例标识符的常量和变量请查看下面的操作符,类实例总是通过引用传递。在类NSString中,NSArray和NSDictionary实例总是作为对现有实例的引用而分配和传递,而不是作为副本。
相等操作符 | 不等操作符 |
(===) | (!==) |
当两个常量或变量指向同一个实例时,返回true | 当两个常量或变量指向不同的实例时,返回true |
class SampleClass: Equatable {
let myProperty: String
init(s: String) {
myProperty = s
}
}
func ==(lhs: SampleClass, rhs: SampleClass) -> Bool {
return lhs.myProperty == rhs.myProperty
}
let spClass1 = SampleClass(s: "Hello")
let spClass2 = SampleClass(s: "Hello")
spClass1 === spClass2 // false
print("\(spClass1)")
spClass1 !== spClass2 // true
print("\(spClass2)")