讲到属性传值,不能不再对比复习一下属性,在Swift中属性有多种,1.存储属性:它作为类实例的一部分,用于存储常量和变量; 可以给存储属性提供一个默认值,也可以在初始化中个对其进行初始化。如:
// 定义存储属性 var age : Int = 0 var name : String? // “?”符号,表示name为可选类型,初始化值为nil
类属性
定义:static var courseCount : Int = 0
// 通过类名访问类属性Student.courseCount = 2
还有计算属性
// 定义计算属性:通过别的方式计算到结果的属性称之为计算属性 var avgScore : Double {
return (mathScore + chineseScore) * 0.5 }
属性监视器
1. 如果是计算属性,直接在set方法中监听即可,类似于objective-c中的kvo方式监听属性。
2. 如果是存储属性,我们需要使用willSet和didSet进行监视。
如:class Square {
var width: Double = 0.0 {
willSet{
println("New Value:\(newValue), Current Value:\(width)")
}
didSet{
println("Old Value:\(oldValue), Current Value:\(width)")
}
}
}
属性重写
可以将一个继承来的只读属性重写为一个读写属性。
class Animal {
var speed: Int {
get {
return 100
}
}
}
class Dog: Animal {
override var speed: Int {
get {
return 300
}
set {
}
}
}
不可以将一个继承来的读写属性重写为一个只读属性存储属性的重写(最终属性的值是存储在父类中的)
网友评论