上一遍主要講述了缺省值的構造方法,這一篇主要講述帶有參數的構造方法
class Point{
var x: Int?
var y:Int?
init(x: Int, y: Int){
self.x = x
self.y = y
}
var p0 = Point(x:1, y:1)
如果此時你調用 let p1 = Point(),此時會報錯,因為你自定義了 init(x: Int, y: Int)這個構造方法,即系統的init()隱私構造方法無效了。故此方法會無效。另外對于帶參數的構造方法,這個參數,默認即是外部參數,也是內部參數。 這也是與普通函數不同的地方,類似于:
init(#x: Int, #y: Int){
...
}
如果你不希望他作為外部參數,只作為內部參數,可以:
init(_ x: Int, _y: Int){
...
}
注意:類中參數的順序于屬性的定義順序無關,只需要保持他調用完之后有值即可。
2.常量存儲屬性與構造方法
class Person{
let name = "xiaoming"
var age :Int
init(name: String, age: Int){
self.name = name
self.age = 18
}
let ak = Person(name: "zcs", age: 18 )
注意二:常量存儲屬性只能在構造方法中修改,其他任何時候都不可以修改。
3.可選屬性與構造方法
class Cat{
let age: Int
let sport: String?
init(age:Int){
self.age = age
}
}
注意3: 如果類中包含可選項屬性,則可以在構造方法中不對可選項屬性進行初始化,該屬性默認為nil,當然也可以在構造方法中對其初始化,但一般不會這樣做,這樣就失去它作為可選項的意義了。