我想传递一个超类实例作为子类声明的参数。例如:
class Dog {
var bone: Int
var collar: String
init(bone: Int, collar: String){
self.bone = bone
self.collar = collar
}
class Doggy: Dog {
var toy: Int
init(bone: Int, collar: String, toy: Int){
self.toy = toy
super.init(bone: Int, collar: String)
}
}
var Spike = Dog(bone:3, collar:"lol")
var Nik = Doggy(bone:3, collar: "lol", toy: 5)
现在,我想要像
这样的东西,而不是最后一行var Nik = Doggy(Spike, toy: 5)
有没有简单的方法来实现这一目标? 提前致谢
答案 0 :(得分:1)
方法重载会对你有所帮助。 你应该处理这些情况。 请参阅此处以供参考:https://www.geeksforgeeks.org/function-overloading-c/ 即,会有不同的初始化方法。
答案 1 :(得分:0)
是的,将另一个init添加到Doggy
类
convenience init(_ dog: Dog, toy: Int) {
self.init(bone: dog.bone, collar: dog.collar, toy: toy)
}
你可以打电话
var Nik = Doggy(Spike, toy: 5)