wes*_*ton 18 c# interface sealed
public sealed interface IMyInterface
{
}
Run Code Online (Sandbox Code Playgroud)
给出"修改后的'密封'对此项无效"
我可以在某些方面理解接口必须是可降级的,否则类不能实现它.
但是为什么我不能指定一个接口不应该定义一个子接口,或者有没有办法,只是没有sealed
?
编辑
我应该努力解释为什么我会想要这个.我经常看到接口继承链,其中dev应该使用组合.Sealed在课堂上是理想的,我想知道是否有办法对接口强制执行相同的操作.由于不合理的继承性使得我认为更难以重构和维护.
编辑2
在评论和帖子的反映中,接口继承树不能像对象继承树那样复杂.当你从另一个界面派生时,IX
你所说的只是"必须实现IX
".防止这种情况没有任何好处.
Eri*_*ert 21
密封课程或课堂的虚拟方法的目的是降低成本.设计继承是昂贵的,如果你不正确,它是危险的.不正确地设计继承会产生安全性,正确性和健壮性,因此如果您不打算设计继承,那么密封您的类是明智的,从而避免与继承设计相关的成本.
需要为继承设计类,因为它们具有实现细节.接口没有实现细节.可继承的接口没有任何相关成本.因此,没有动力增加允许密封接口的功能.
Bot*_*000 13
这会让人感到困惑.使用标准语法,这意味着您无法实现该接口.此外,接口不包含任何功能或字段,因此密封它没有实际用途.接口或多或少是契约.
从"接口继承"中断接口不会做任何事情,因为人们可以只实现你的接口,而另一个接口可以继承你的接口.