【问题标题】:How to modify base class properties from sub classes via super.init in Swift?如何通过 Swift 中的 super.init 从子类修改基类属性?
【发布时间】:2017-08-03 18:46:11
【问题描述】:

如何在 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'

【问题讨论】:

  • 建议您阅读 Apple Docs 中有关类和初始化的更多信息。你很迷茫
  • 如果你能解释一下,我会在阅读文档后变得更加困惑

标签: swift initialization


【解决方案1】:

您正试图在初始化之前访问您的超类的firstName。你应该先打电话给super.init()。它看起来像:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2013-12-12
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多