我该如何处理这个初始化程序?
用title
属性创建一个名为Parent
的类并为您的课程编写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.")
}
}
让你初始化你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")
星战前传VI初始化
返回绝地初始化
,然后如果你分配nil
您变量你会看到未初始化消息:
child = nil
绝地的归来正在被初始化。
星球大战:第六集正在被初始化。
我其实没有尝试,但我认为它可以这样工作。让我知道它是否有效。
class Child: Parent {
let subtitle: String
override init(title: String, subtitle:String) {
self.subtitle = subtitle
super.init(title)
}
}
你不需要为'title'和'string'指定一个类型吗?此代码不适合我编译。 –
是的,你是对的,我想我不编译它必须被定义为字符串 –
非常感谢。还有一件事我忘了放在“创建一个可选的类型为Child的变量并为其指定一个子对象。” – AllocSystems
'var child:Child? =儿童(标题:“某些标题”,副标题:“一些小标题”)' – vacawama
然后如果你用'child = nil'跟随它,你会看到你的两个deinit消息。 – vacawama