swift 3.1.1错误额外的参数'{property}'在调用
问题描述:
我测试了Swift 3中的继承并且遇到了意外的错误。无论如何改变super.init()
调用,我都无法使错误跟踪的问题比这更少。swift 3.1.1错误额外的参数'{property}'在调用
我已阅读过这里的文档和其他类似帖子,但他们没有任何这个特定问题的例子。我正在尝试创建一个具有变量或常量属性的类,然后创建另一个继承自第一个类并添加新属性的类。
错误来自我的子类的init函数:我先设置新的属性,然后用超类的适当参数调用super.init()
。斯威夫特然后告诉我,第三个参数“生日”是一个“额外的论点”。
在我的超类有三个属性和我的子类有两个之间存在某种问题?我想不出任何其他可能会导致此类错误的问题。不知道哪个部分让我感到困惑。
这里是我的代码:
class Person {
var name: String
var age: Int
let birthday: String
init(name: String, age: Int, birthday: String) {
self.name = name
self.age = age
self.birthday = birthday
}
}
class Student: Person {
var isEnrolled: Bool
var numberOfClasses: Int
init(isEnrolled: Bool, numberOfClasses: Int) {
self.isEnrolled = isEnrolled
self.numberOfClasses = numberOfClasses
super.init(name: name, age: age, birthday: birthday) {
self.name = name
self.age = age
self.birthday = birthday
}
}
}
答
您的初始化没有关闭,所以很自然,你的做法是行不通的。它说birthday
是一个额外的参数,因为(不存在的)闭包是列表中的第四个参数。
Student
的初始化不知道什么name
,age
或birthday
是。您还应该在初始化程序中包含这些参数,最后请致电super.init
。
init(name: String, age: Int, birthday: String, isEnrolled: Bool, numberOfClasses: Int) {
self.isEnrolled = isEnrolled
self.numberOfClasses = numberOfClasses
super.init(name: name, age: age, birthday: birthday)
}