swift - 如何在 Swift 中通过 super.init 修改子类的基类属性?

标签 swift initialization

如何在 Swift 中通过 super.init 修改子类的基类属性?

考虑基类有一个名为名字的属性,所以我希望子类添加姓氏并通过 super.init 传递它 下面是代码

class mainClass {
    var firstname : String = "Abhinav"
    init(firstname : String){
        self.firstname = firstname
    }
    func printfirstname(){
        print(firstname)
    }
}
class subClass:mainClass {
var lastname : String

    init(lastname:String){
        self.lastname = lastname
        let name :String = firstname + lastname
        super.init(firstname:name)
    }
    func printname(){
        print(firstname)
    }

}

var subclass = subClass(lastname:"Jha")
subclass.printfirstname()

我收到错误“在 super.init 初始化 self 之前在属性访问“firstname”中使用“self”

最佳答案

您正在尝试在初始化之前访问父类(super class)的 firstName。您应该首先调用 super.init()。它看起来像:

init(lastname:String){
    self.lastname = lastname
    super.init(firstname: "Abhinav")
    let name = firstname + lastname
    self.firstname = name
}

关于swift - 如何在 Swift 中通过 super.init 修改子类的基类属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42768934/

相关文章:

ios Swift fatal error : use of unimplemented initializer 'init()'

ios - 将 UIPageViewController 与快速和多 View Controller 一起使用

java - setUp 未初始化字段

swift - 将文本中的 html 链接转换为可点击的链接 - SwiftUI

ios - 展开时 ImageView 发现为零

swift - 在 Swift 中访问 Flutter SharedPreferences

java int[] val 或 int val[]

arrays - Go:空花括号对数组初始化内存分配的影响

arrays - 有没有办法使用 R 中的表达式/函数初始化数组

swift - 协议(protocol)扩展初始化器