当基类包含virtual
方法时,要在子类中添加更多派生的版本,我们必须使用override
。
AFAICT,这有两个目的:
但是,令我沮丧的是,在VS2010 / .NET4中,实现接口方法时似乎无法使用override
。
显然,第一个项目符号不是一个问题,但是该override
关键字将作为一个很好的简单文档,并检查接口方法是否实际上被标记为override
。
因此,当查看类实现时,除了以外,还有没有其他// comment
方法可以表明该方法实现了特定接口的方法?
我相信这句话概括了您所关心的一切:
但是overridekeyword可以作为一个很好的简单文档,并检查接口方法是否实际上是被标记为override的接口方法。
考虑一下什么是接口,什么是实现者。类可以实现也可以不实现接口,并且仍然可以实现具有与接口相同签名的方法。什么一个接口的作用是确保一些类有需要的成员fullfil合同的工作。
例如,一个类Calculator
可以实现ICalculator
和Calculator
实现Addition(int, int)
。但是Calculator
无法实现ICalculator
,它仍然可以执行Addition(int, int)
。
您如何区分这两种情况?何时使用override
或不使用。
另一点:实现一个类,实现一个接口并通过在继承冒号之后将其从类签名中删除而停止实现它,这是很好的。
另一方面,认为您正在寻找的文档是编译器错误,告诉您Calculator
实现接口,ICalculator
但没有声明和实现由定义的一个或多个成员ICalculator
。如果代码可以编译,则您不必在意某个成员是否属于某个接口或其他接口。您知道某些成员是某些接口的实现,因为您的Calculator
签名看起来像这样:public class Calculator : ICalculator
。
同样,在某些情况下,实现成员将其实现为实现除接口之外的其他功能。有什么凌驾您的实现?这是否比避免override
关键字更令人困惑?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句