1.属性
class Class1 : parentClass {
var property1 : Int /*变量存储属性*/
let property2 : Int /*常量存储属性*/
lazy var property3 : Int /*延迟属性*/
var property4 : Int = 0 /*给属性默认值*/
var property5: Int { /*计算属性*/
get {
return property1 * 2
}
set (newValue) {
property1 = newValue / 2
}
}
var property6 : Int { /*只读计算属性*/
return property2 * 3
}
var property7 : Int = 0 { /*属性观察者*/
willSet(newValue) {
if newValue < 0 {
property7 = 0
}
}
didSet(newValue) {
...
}
}
}
a).属性有存储属性和计算属性,存储属性又包括常量属性(let修饰)和变量属性(var修饰),
b).延迟属性:使用“lazy”关键字,可以使属性在第一次使用时才加载,这样能够节省内存资源,建议尽量使用;
c).属性观察者:willSet()和didSet(),可以用来监控属性设置前后状态,可供在编程时加入必要的处理;
d).属性观察者:不能用于延时属性;
e).结构体和枚举的属性定义,与类的属性定义类似;
f).有属性观察者的属性,定义时需设置默认值;
g).静态属性:
结构体和枚举使用“static”关键字声明静态属性;
类使用“class”关键字声明静态属性;
静态属性作用与c++类似;
h).类不能定义“静态存储属性”;
i).枚举不能定义“实例存储属性”;结构体全支持;
注:h、i项中的面向对象属性有:“实例存储属性”、“静态存储属性”、“实例计算属性”、“静态计算属性”。
2.下标
a).使用“subscript”关键字,如:
class Class1 {
var property1 : Int
...
subscript(index : Int) -> Int {
get {
return index
}
set(newValue) {
...
}
}
}