1. 类的基本定义
Swift中的结构体和类非常相似, 但是又有不同之处
类是具有相同属性和方法的抽象
类没有逐一构造器, 因此需要手动写构造方法
如果写了自定义的构造器, 则原有的
类名()
这个方法将失效,如果需要使用到原有默认的构造器
类名()
则需要在中重写init(){}
构造器格式:
class 类名称 {
类的属性和方法
}
class Rect {
var width:Double
var height:Double
func show() -> Void{
print("width = \(width) height = \(height)")
}
//类没有逐一构造器, 因此需要手动写构造方法
init (width : Double, height : Double){
self.width = width
self.height = height
}
// 写了上面的构造方法之后, 则原有的 类名() 这个方法将失效, 因此需要重写构造器
init () {
self.height = 0.0
self.width = 0.0
}
}
- 类没有逐一构造器, 如果想要使用, 必须手动写构造方法
- 注意: 如果手动重写了构造器, 则原有的
init () {}
将失效, 如果要使用, 则也需要重写
//在该类中添加构造器
init (width : Double, height : Double){
self.width = width
self.height = height
}
// 写了上面的构造方法之后, 则原有的 类名() 这个方法将失效, 因此需要重写构造器
init () {
self.height = 0.0
self.width = 0.0
}
2. 类的使用
- 使用自定义类创建对象
//该类必须手动写 init (width : Double, height : Double){} 构造器, 如果没有构造器而使用则直接报错
var r1 = Rect(width: 10.0, height: 10.0)
r1.show()
var r2 = r1
r2.show()
//输出结果:
//width = 10.0 height = 10.0
//width = 10.0 height = 10.0
- 对象给新变量定义时赋值, 是引用类型, 指针引用, 新对象创建出来的对象和之前的对象指向同一个存储空间
//类是引用类型, 类之间的赋值其实是将r2指向了r1的存储空间
//所以他们是两个只想同一块存储空间, 修改其中一个会影响到另外一个
r1.width = 99
r1.show()
r2.show()
//输出结果:
//width = 99.0 height = 10.0
//width = 99.0 height = 10.0
- 使用恒等运算符判断是否是同一个实例, 也就是判断是否指向同一个存储空间
- 恒等 ===
- 不恒等 !==
var r3 = Rect()
if r1 === r3 {
print("指向同一块存储空间")
}
//输出结果:
//指向不同的存储空间