swift有三種屬性:1账磺、存儲屬性 2、計算屬性 3潜沦、類型屬性
-
存儲屬性
//1干花、存儲屬性 class Person{ //常量不可改值,變量可以揍鸟,存儲屬性初始化的時候必須給初始值 var name:String = "張三" var height:Double = 1.75 let life = 1 } var person1 = Person() person1.name = "王二" person1.height = 1.81 println("這個人的姓名是\(person1.name)") println(person1.height) println(person1.life)
-
計算屬性
//2兄裂、計算屬性
class Square{
var width:Double = 0
var girth:Double{
get{
return width*4
}//1-1句旱、newValue是隱藏屬性 // set{ // girth = newValue / 4 // } //1-2、也可自己定義賦值 set(newGirth){ width = newGirth / 4 } } } var s = Square() s.width = 10 println("這個矩形的周長是\(s.girth)") var q = Square() q.girth = 80 println("這個矩形的寬為\(q.width)")
-
類型屬性
//3晰奖、類型屬性 class Circle{ //如果不寫set方法谈撒,只寫get方法的話,那么該屬性只有g(shù)et方法 class var PI: Double { return 3.14 } } var circle1 = Circle.PI * 6 println("這個圓的周長是\(circle1)")
-
補充
//延時加載(即何時用到何時加載)可以避免資源的浪費匾南,當(dāng)一些屬性內(nèi)容中含有太多信息的時候考慮用 //延時加載不能用于計算屬性,也不能用于常量屬性 class Animal{ var name:String = "dog" lazy var status:String = "這是一個延時加載的屬性" let life:Double = 1 class var age:Double{ get{ return 20 } set{ age = newValue * 2 } } } var animal1 = Animal()
//?注意啃匿,以下寫法會發(fā)生死循環(huán)
class Triangle{
var area:Double {
get{
println("get方法被調(diào)用")
return area
}
set{
println("set方法被調(diào)用")
area = newValue
}
}
}
//在一個類對象被創(chuàng)建出來的時候會自動調(diào)用init()方法
class Test {
init(){
println("Test類創(chuàng)建被調(diào)了")
}
}
var test = Test()