- 1.屬性監(jiān)聽器關(guān)鍵字:
willSet
和didSet
class Teacher {
var name : String {
willSet {
//默認(rèn)生成newValue來接收外界傳遞進(jìn)來的新值
print("將要設(shè)置的名字:\(newValue)")
}
//此屬性被賦值后會調(diào)用的方法
didSet {
//默認(rèn)生成oldValue來保存此屬性的原始值
print("舊的名字:\(oldValue)")
}
}
var age : Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
- 2.屬性包裝器
背景:swift5.1版本之后引入的一個新的語法特性
關(guān)鍵字:@propertyWrapper
//定義屬性包裝器
@propertyWrapper
struct MoreThanZero {
private var number : Int
init() {self.number = 0}
var wrappedValue: Int {
get {return number}
set {
if newValue < 0 {
self.number = 0
}else{
self.number = newValue
}
}
}
}
class Member: CustomStringConvertible {
private var name : String
private var age : Int
init() {
self.name = "default"
self.age = 0
}
//使用屬性包裝器來定義計算屬性
@MoreThanZero var memberAge : Int
var description: String {
return "\(self.memberAge)"
}
}
- 3.實例屬性和類屬性
1.類屬性使用static
或class
關(guān)鍵字來聲明
2.static
關(guān)鍵字聲明的屬性成為靜態(tài)屬性
- 4.實例方法和類方法
1.屬性方法的調(diào)用秧秉,self
可以省略, 有時候屬性名稱
和方法中的參數(shù)名稱
相同, 為了避免歧義
沛婴,實例屬性前面的self
不能省略
2.實例屬性賦值: 對于引用類型
修改是沒問題的切油,對于值類型
, 使用mutating
關(guān)鍵字修飾的實例方法才能對屬性進(jìn)行修改
.
3.類方法使用static
或class
關(guān)鍵字來聲明, static
關(guān)鍵字修飾的方法稱為靜態(tài)方法
, 此方法不能被子類override
5.下標(biāo)方法
關(guān)鍵字subscript
:參數(shù)
和返回值
作為下標(biāo)
和通過下標(biāo)獲取的值
, 必須實現(xiàn)一個get代碼塊和一個可選的set代碼塊
public class MyArray {
var array : Array<Int>
init(param: Int...) {
array = param
}
//subscript是用于定義下標(biāo)功能的方法
subscript(index:Int) -> Int {
set{
array[index] = newValue
}
get {
return array[index]
}
}
}