属性 – Swift类中的错误:属性未在super.init调用初始化

前端之家收集整理的这篇文章主要介绍了属性 – Swift类中的错误:属性未在super.init调用初始化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个类,Shape和Square
  1. class Shape {
  2. var numberOfSides = 0
  3. var name: String
  4. init(name:String) {
  5. self.name = name
  6. }
  7. func simpleDescription() -> String {
  8. return "A shape with \(numberOfSides) sides."
  9. }
  10. }
  11.  
  12. class Square: Shape {
  13. var sideLength: Double
  14.  
  15. init(sideLength:Double,name:String) {
  16. super.init(name:name) // Error here
  17. self.sideLength = sideLength
  18. numberOfSides = 4
  19. }
  20. func area () -> Double {
  21. return sideLength * sideLength
  22. }
  23. }

使用上面的实现我得到错误

  1. property 'self.sideLength' not initialized at super.init call
  2. super.init(name:name)

为什么我必须在调用super.init之前设置self.sideLength?

@H_301_12@ 报价从Swift编程语言,它回答你的问题:

“Swift’s compiler performs four helpful safety-checks to make sure
that two-phase initialization is completed without error:”

Safety check 1 “A designated initializer must ensure that all of the
“properties introduced by its class are initialized before it
delegates up to a superclass initializer.”

Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. 07000

猜你在找的Swift相关文章