1. 類的基本定義
Swift中的結(jié)構(gòu)體和類非常相似, 但是又有不同之處
類是具有相同屬性和方法的抽象
類沒(méi)有逐一構(gòu)造器, 因此需要手動(dòng)寫構(gòu)造方法
如果寫了自定義的構(gòu)造器, 則原有的
類名()
這個(gè)方法將失效,如果需要使用到原有默認(rèn)的構(gòu)造器
類名()
則需要在中重寫init(){}
構(gòu)造器格式:
class 類名稱 {
類的屬性和方法
}
class Rect {
var width:Double
var height:Double
func show() -> Void{
print("width = \(width) height = \(height)")
}
//類沒(méi)有逐一構(gòu)造器, 因此需要手動(dòng)寫構(gòu)造方法
init (width : Double, height : Double){
self.width = width
self.height = height
}
// 寫了上面的構(gòu)造方法之后, 則原有的 類名() 這個(gè)方法將失效, 因此需要重寫構(gòu)造器
init () {
self.height = 0.0
self.width = 0.0
}
}
- 類沒(méi)有逐一構(gòu)造器, 如果想要使用, 必須手動(dòng)寫構(gòu)造方法
- 注意: 如果手動(dòng)重寫了構(gòu)造器, 則原有的
init () {}
將失效, 如果要使用, 則也需要重寫
//在該類中添加構(gòu)造器
init (width : Double, height : Double){
self.width = width
self.height = height
}
// 寫了上面的構(gòu)造方法之后, 則原有的 類名() 這個(gè)方法將失效, 因此需要重寫構(gòu)造器
init () {
self.height = 0.0
self.width = 0.0
}
2. 類的使用
- 使用自定義類創(chuàng)建對(duì)象
//該類必須手動(dòng)寫 init (width : Double, height : Double){} 構(gòu)造器, 如果沒(méi)有構(gòu)造器而使用則直接報(bào)錯(cuò)
var r1 = Rect(width: 10.0, height: 10.0)
r1.show()
var r2 = r1
r2.show()
//輸出結(jié)果:
//width = 10.0 height = 10.0
//width = 10.0 height = 10.0
- 對(duì)象給新變量定義時(shí)賦值, 是引用類型, 指針引用, 新對(duì)象創(chuàng)建出來(lái)的對(duì)象和之前的對(duì)象指向同一個(gè)存儲(chǔ)空間
//類是引用類型, 類之間的賦值其實(shí)是將r2指向了r1的存儲(chǔ)空間
//所以他們是兩個(gè)只想同一塊存儲(chǔ)空間, 修改其中一個(gè)會(huì)影響到另外一個(gè)
r1.width = 99
r1.show()
r2.show()
//輸出結(jié)果:
//width = 99.0 height = 10.0
//width = 99.0 height = 10.0
- 使用恒等運(yùn)算符判斷是否是同一個(gè)實(shí)例, 也就是判斷是否指向同一個(gè)存儲(chǔ)空間
- 恒等 ===
- 不恒等 !==
var r3 = Rect()
if r1 === r3 {
print("指向同一塊存儲(chǔ)空間")
}
//輸出結(jié)果:
//指向不同的存儲(chǔ)空間