为什么协议默认实现适用于子类?

问题描述 投票:0回答:1

enter image description here

protocol ProtocolA {
  var name: String { get }
}

extension ProtocolA {
  var name: String { "Allen" }
}

class ClassA: ProtocolA {
   func logName() {
    print(name)
   }
}

class ClassB: ClassA {
    var name: String {
      "Bob"
    }
}

ClassA().logName()// "Allen"
ClassB().logName()// "Allen", why is it not "Bob"

如何命名为“Bob”?超类是否必须实现名称?

swift class subclass swift5 swift-protocols
1个回答
0
投票
class ClassB: ClassA {
    override var name: String {
        "Bob"
    }
    
    override func logName() {
        print(name)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.