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