存储属性:用于存储一个常量或者变量,简单来说就是用来存储值得。它在定义时可以直接赋值,可以定义为可选值,也可以先定义然后在重载构造函数中赋值。
直接赋值:
class Person1 {
var name: String = "lili"
let age: Int = 10
}
定义为可选值:
class Person1 {
var name: String?
let age: Int?
}
先定义再加载重载函数:
class Person1 {
var name: String
var age: Int
init (name:String, age:Int){
self.name = name
self.age = age
}
}
计算属性:计算属性不直接存储值,而是通过提供一个getter来获取值,提供一个setter来设置其他属性的变化/值。如果也直接存储值的话,那么就和存储属性一样了(变成了存储属性)。
class Person {
var length : Int = 10
var age : Int
{
get
{
return length * 2
}
set
{
length = newValue / 2 //set可以自带一个newName的参数,如果没有,默认为newValue
}
}
}
其实,存储属性和计算属性的区别就在于定义的时候是否直接存储值,存储属性直接为其赋值并存储值,而计算属性则是通过getter方法来间接地获取值