上一遍主要讲述了缺省值的构造方法,这一篇主要讲述带有参数的构造方法
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,当然也可以在构造方法中对其初始化,但一般不会这样做,这样就失去它作为可选项的意义了。