Swift “覆盖”在协议中是什么意思?

Swift “覆盖”在协议中是什么意思?,swift,overriding,swift-protocols,Swift,Overriding,Swift Protocols,我在标准库中看到过类似()的奇怪东西 协议Foo:Bar{ 重写静态func baz() } 我知道这在重写某个超类的open方法时是必要的。。。但是我从来没有在协议中这样做过,我也不知道这意味着什么。这意味着协议声明了一个新成员来替换父协议中的相同成员,尽管这与“隐藏”不同(因此它与C#的newmethodmodifier关键字并不完全相同,而且Swift还支持static协议,这是C#s接口所不能做到的) 在您为公共协议FloatingPoint提供的链接中,我们看到FloatingPoi

我在标准库中看到过类似()的奇怪东西

协议Foo:Bar{
重写静态func baz()
}

我知道这在重写某个超类的open方法时是必要的。。。但是我从来没有在协议中这样做过,我也不知道这意味着什么。

这意味着协议声明了一个新成员来替换父协议中的相同成员,尽管这与“隐藏”不同(因此它与C#的
new
methodmodifier关键字并不完全相同,而且Swift还支持
static
协议,这是C#s
接口所不能做到的)

在您为
公共协议FloatingPoint
提供的链接中,我们看到
FloatingPoint
实现了
SignedNumeric

FloatingPoint
声明了
重写变异func negate()
-但是
签名数值也声明了
因此需要添加
重写

官方Swift语言5.1参考说明了类(但不明确协议)上的
override
关键字,但本节前言暗示它适用于协议,只要它适用于所有声明:

重写超类方法的方法必须用
override
声明修饰符进行标记。在没有
override
修饰符的情况下重写方法或在没有重写超类方法的方法上使用
override
修饰符是编译时错误