我正在尝试初始化一个子类,如下所示:
class NameShape{
var numberOfSide: Int = 0
var name:String
func simpleDescription() -> String {
return "A square with \(numberOfSide) sides."
}
init (name: String){
self.name = name
}
}
class Square:NameShape{
var sideLength: Double
init(name: String, sideLength: Double){
super.init(name: name)
self.sideLength = sideLength
numberOfSide = 4
}
func area() ->Double {
return sideLength * sideLength
}
override func simpleDescription() -> String {
return "A square with sides of length \(sideLength)."
}
}
我得到一个错误property 'self.sideLength' not initialized at super.init call
,所以我切换self.sideLength = sideLength
和super.init(name: name)
,例如:
class Square:NameShape{
var sideLength: Double
init(name: String, sideLength: Double){
self.sideLength = sideLength
super.init(name: name)
numberOfSide = 4
}
func area() ->Double {
return sideLength * sideLength
}
override func simpleDescription() -> String {
return "A square with sides of length \(sideLength)."
}
}
现在很好,有人可以解释背后的原理吗?谢谢!!!