结果是“a”,但我希望它是“b”。我想知道为什么,以及如何在没有参数的情况下调用 doTest
来打印“b”。
class AA {
func doTest() {
print("a")
}
}
class BB: AA {
func doTest(_ different: Bool = true) {
print("b")
}
}
let bObjc = BB()
bObjc.doTest()
最佳答案
BB
类没有覆盖AA
中的方法,这意味着BB
上存在两个方法:
func doTest() // inherited
func doTest(_ different: Bool = true) // declared
当你打电话时
bObjc.doTest()
编译器必须选择其中之一。而且它更喜欢没有参数的方法而不是有默认参数的方法。
关于swift - 为什么这个带有可选参数的方法不覆盖基类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56664243/