Swift编程中的初始化与反初始化完全讲解

2020-01-08 22:35:17丽君

println("res is: (res.no1)")
println("res is: (print.no1)")
println("res is: (print.no2)")


当我们使用 playground 运行上面的程序,得到以下结果。

 


res is: 20
res is: 30
res is: 50

初始化继承和重写
Swift 默认不允许其子类继承其超类初始化函数为成员类型。继承适用于超类初始化只能在一定程度上,这将在自动初始化程序继承进行讨论。

当用户需要具有在超类,子类中定义的初始化器,初始化函数必须由用户作为自定义实现来定义。 当重写,必须在子类到超类的使用 “override”关键字来声明。

复制代码
class sides {
    var corners = 4
    var description: String {
        return "(corners) sides"
    }
}
let rectangle = sides()
println("Rectangle: (rectangle.description)")

 

class pentagon: sides {
    override init() {
        super.init()
        corners = 5
    }
}

let bicycle = pentagon()
println("Pentagon: (bicycle.description)")


当我们使用 playground 运行上面的程序,得到以下结果。

 


Rectangle: 4 sides
Pentagon: 5 sides

指定和便捷初始化在动作中

复制代码
class Planet {
    var name: String
    
    init(name: String) {
        self.name = name
    }
    
    convenience init() {
        self.init(name: "[No Planets]")
    }
}
let plName = Planet(name: "Mercury")
println("Planet name is: (plName.name)")

 

let noplName = Planet()
println("No Planets like that: (noplName.name)")

class planets: Planet {
    var count: Int