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方法的话,那么该属性只有get方法 class var PI: Double { return 3.14 } } var circle1 = Circle.PI * 6 println("这个圆的周长是\(circle1)")
-
补充
//延时加载(即何时用到何时加载)可以避免资源的浪费,当一些属性内容中含有太多信息的时候考虑用 //延时加载不能用于计算属性,也不能用于常量属性 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()
//⚠注意,以下写法会发生死循环
class Triangle{
var area:Double {
get{
println("get方法被调用")
return area
}
set{
println("set方法被调用")
area = newValue
}
}
}
//在一个类对象被创建出来的时候会自动调用init()方法
class Test {
init(){
println("Test类创建被调了")
}
}
var test = Test()
网友评论