- 快速教程
- 斯威夫特 - 主页
- 斯威夫特 - 概述
- Swift - 环境
- Swift - 基本语法
- Swift - 数据类型
- Swift - 变量
- Swift - 可选
- Swift - 元组
- Swift - 常量
- Swift - 文字
- Swift - 运算符
- Swift - 决策
- Swift - 循环
- Swift - 字符串
- 斯威夫特 - 角色
- Swift - 数组
- Swift - 套装
- 斯威夫特 - 字典
- Swift - 函数
- Swift - 闭包
- Swift - 枚举
- Swift - 结构
- Swift - 类
- Swift - 属性
- Swift - 方法
- Swift - 下标
- Swift - 继承
- Swift - 初始化
- Swift - 去初始化
- Swift - ARC 概述
- Swift - 可选链接
- Swift - 类型转换
- Swift - 扩展
- Swift - 协议
- Swift - 泛型
- Swift - 访问控制
- 斯威夫特有用的资源
- Swift - 在线编译
- Swift - 快速指南
- Swift - 有用的资源
- 斯威夫特 - 讨论
Swift - 类
Swift 4 中的类是灵活构造的构建块。与常量、变量和函数类似,用户可以定义类属性和方法。Swift 4 为我们提供了这样的功能:在声明类时,用户无需创建接口或实现文件。Swift 4 允许我们将类创建为单个文件,一旦类初始化,外部接口将默认创建。
上课的好处
继承将一个类的属性获取到另一个类
类型转换使用户能够在运行时检查类类型
反初始化器负责释放内存资源
引用计数允许类实例拥有多个引用
类和结构的共同特征
- 定义属性来存储值
- 定义下标是为了提供对值的访问
- 初始化方法以改进功能
- 初始状态由初始化器定义
- 功能扩展超出默认值
- 确认协议功能标准
句法
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)")
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
Mark is 300
将类属性作为引用类型访问
类属性可以通过“.”访问 句法。属性名称由“.”分隔 在实例名称之后。
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)")
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
Mark1 is 300 Mark2 is 400 Mark3 is 900
类标识运算符
Swift 4 中的类引用指向单个实例的多个常量和变量。要了解指向特定类实例的常量和变量,请使用身份运算符。类实例始终通过引用传递。在类中,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)")
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
main.SampleClass main.SampleClass