创建一个名为Parent
且具有title
属性的类,并为您的班级编写init
和deinit
方法。
编写一个名为Child
的子类。
我的问题是将其放入代码中(调用super.init(title:)
并传递title
参数。
class Parent {
let title: String
init(title: String){
self.title = title
print("\(title) is initialized")
}
deinit {
print("\(title) is being deinitialized.")
}
}
class Child: Parent {
let subtitle: String
init(subtitle: String){
self.subtitle = subtitle
// i'm supposed to call a super.init, how
print("\(subtitle) is initialized")
}
deinit {
print("\(subtitle) is being deinitialized.")
}
}
答案 0 :(得分:1)
为Child
制作初始值设定项,同时选择title
和subtitle
,然后在super.init(title: title)
的初始值设定项中调用Child
:
class Child: Parent {
let subtitle: String
init(title: String, subtitle: String){
self.subtitle = subtitle
super.init(title: title)
print("\(subtitle) is initialized")
}
deinit {
print("\(subtitle) is being deinitialized.")
}
}
然后,如果您创建一个Child
对象并将其分配给可选 Child
(即Child?
),您将会看到初始化的消息:
var child: Child? = Child(title: "Star Wars: Episode VI", subtitle: "Return of the Jedi")
星球大战:第六集初始化了 绝地的归来被初始化
然后,如果您将nil
分配给您的变量,则会看到取消初始化的消息:
child = nil
绝地归来正在被取消初始化 星球大战:第六集正在被取消初始化。
答案 1 :(得分:0)
我实际上没有尝试,但我认为它可以这样工作。如果有效,请告诉我。
class Child: Parent {
let subtitle: String
override init(title: String, subtitle:String) {
self.subtitle = subtitle
super.init(title)
}
}