Swift 类

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("具有不通相同的属性")
}

输出:

引用相同的类实例
具有相同的属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoxiaobukuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值