swift を開発していて、 Java のインターフェイスと同じノリで override を protocol の実装関数に付与しようとしました。

protocol HogeDelegate {
    func hoge()
}

class HogeController: HogeDelegate {
    override func hoge() {

    }
}

しかしこれは、 Method does not override any method from its superclass のエラーになります。

どうやら、 swift の override は class のメソッドに対して定義されるべきもので、 protocol の実装にあたっては付与してはいけなさそうだ、と思っています。しかし、これだと、例えばシグネチャーが複雑になってきたときに、確かにほしい実装を今行えているのだろうか、と心配になったりします。(とくに、 protocol がデフォルトを持っている場合)

質問:

  • swift において、 protocol で定義される関数の実装を行っている場合に、それが確かに protocol の関数を実装できていることを、言語的に強制することはできますか?