類及構(gòu)造函數(shù)/析構(gòu)函數(shù)
class rectangel {//定義一個(gè)類
var width : Double
var height : Double
var x : Double
var y : Double
static var i = 0
init (){
width = 0
height = 0
x = 0
y = 0
}//定義構(gòu)造函數(shù)進(jìn)行初始化吠裆,自定義構(gòu)造函數(shù)叁怪,編譯器將不再生成無參的構(gòu)造函數(shù)
func fat(change: Double) -> Double {
width += change
return width
}//定義成員方法(變寬)
class func infoprint(){//定義類方法
i = 23
print(i)
print("謝謝觀賞")
}
deinit{//析構(gòu)函數(shù):反初始化更振,釋放已擁有的資源
print("資源已經(jīng)釋放")
}
}
//與結(jié)構(gòu)體的區(qū)別:
//1.用let定義的結(jié)構(gòu)體變量思灰,成員不能修改
//2.結(jié)構(gòu)體是值類型,在賦值的時(shí)候發(fā)生復(fù)制
//3.類是引用類型
//4.結(jié)構(gòu)體成員方法需要加上mutating才能修改成員
//5.類中的成員變量構(gòu)造函數(shù)默認(rèn)沒有參數(shù),必須初始化
var xx1 = rectangel()//創(chuàng)建對(duì)象凯亮,在堆上分配空間
xx1.height = 30
xx1.width = 20
xx1.x = 50
xx1.y = 60
print(xx1.height, xx1.width, xx1.x, xx1.y)
//默認(rèn)是為strong引用较曼,可添加weak變?yōu)槿跻酶馍海ㄈ跻眯枰褂枚郑∪〕蓡T)
weak var xx2 = xx1
xx2!.height = 90
xx2!.width = 25
rectangel.i = 14//靜態(tài)成員用類名調(diào)用
print(xx2!.height, xx2!.width, xx2!.x, xx2!.y, rectangel.i)
xx1 = rectangel()//當(dāng)再次創(chuàng)建時(shí),若無強(qiáng)引用红选,則原xx1中的資源將會(huì)被釋放
var xx3 = rectangel()
xx3.height = 100
xx3.width = 35
xx3.x = 22
print(xx3.height, xx3.width, xx3.x, xx3.y)
rectangel.infoprint()
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者