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
修饰符是编译时错误