我有两个班,ShapeSquare

class Shape {
    var numberOfSides = 0
    var name: String
    init(name:String) {
        self.name = name
    }
    func simpleDescription() -> String {
        return "A shape with \(numberOfSides) sides."
    }
}

class Square: Shape {
    var sideLength: Double

    init(sideLength:Double, name:String) {
        super.init(name:name) // Error here
        self.sideLength = sideLength
        numberOfSides = 4
    }
    func area () -> Double {
        return sideLength * sideLength
    }
}

通过上面的实现,我得到了一个错误:

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

为什么我必须先设定self.sideLength再拨打super.init

推荐答案

引用Swift编程语言回答您的问题:

"Swift 的编译器执行四项有用的安全判断,以确保

安全判断1"指定的初始值设定人必须确保

摘自:苹果公司的《Swift编程语言》我的书.

Swift相关问答推荐

使用简单变量和函数的奇怪行为

运行异步任务串行运行

RealityKit(VisionOS)中的PhysicBodyComponent和DragGesture

它是RxSwift中直接用于可扩展视图的有效的可扩展BehaviorRelay值?

在SwiftUI中判断选项时避免重复查看

如何写一个;风格;视图修饰符,它会影响特定类型的所有嵌套视图?

如何使用模型在 SwiftUI 的列表中进行搜索

为什么 UITapGestureRecognizer 对于 Swift 集合视图中的单元格图像无法正常工作?

memcpy 复制带偏移量的数组

TabView 无法在屏幕上正确显示

在 struct 中的序列和非序列泛型函数之间进行 Select

如何在 Swift 中使用子定义覆盖父类扩展

使 Swift 并发中的任务串行运行

如何以快速 Select 器菜单样式调整图像大小

Swift:连接两个数组而不重复共享后缀/前缀

找不到目标AAA的 SPM 工件 - 仅限 Xcode 13.3

swift 如何从 Int 转换?到字符串

为 UIActivityViewController Swift 设置不同的活动项

如何在 Swift 中将对象归零

使用 swift IOS 使 UIBarButtonItem 消失