考虑以下游乐场:
protocol A {
func f() -> String
}
extension A {
func f() -> String { return "AAAA" }
}
class B: A {}
class C: B {
func f() -> String { return "CCCC" }
}
let a: A = C()
let b: B = C()
let c: C = C()
a.f() // "AAAA" - why?
b.f() // "AAAA" - why?
c.f() // "CCCC"
Run Code Online (Sandbox Code Playgroud)
我不明白为什么a.f()并b.f()返回"AAAA"- 它们应该返回,"CCCC"因为func f() -> String …