小编Ole*_*ran的帖子

在子子类中覆盖协议默认实现不参与动态分派

考虑以下游乐场:

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 …

protocols swift

10
推荐指数
1
解决办法
1798
查看次数

标签 统计

protocols ×1

swift ×1