B类是A类(B : A)
我将课程初始化为B.init()
在A中调用时,除非我使用强制转换,否则永远不会调用覆盖method(
:
class A {
...
self.method() //A method called
(self as! B).method() //B method called
}
为什么?
由于我将实例初始化为B,我希望它调用overriden方法,但这不是真的,除非我使用强制转换。
答案 0 :(得分:0)
我认为你背后有一些错误。我构建了您的示例,它按预期工作:
class A {
func method() {
print("A")
}
func check() {
method()
(self as? B)?.method()
}
}
class B: A {
override func method() {
print("B")
}
}
其他地方:
let b = B()
b.check()
//B
//B