【发布时间】:2012-03-27 13:36:50
【问题描述】:
public sealed interface IMyInterface
{
}
给出“修改后的‘密封’对此项无效”
我可以在某些方面理解接口必须是可继承的,否则类无法实现它。
但是为什么我不能指定一个接口不应该定义一个子接口或者有办法,只是没有sealed?
编辑
我应该努力解释我为什么想要这个。我经常看到开发人员应该使用组合的接口继承链。 Sealed 非常适合在类中执行此操作,我想知道是否有办法对接口强制执行相同的操作。在我看来,不必要的继承使得重构和维护变得更加困难。
编辑 2
根据 cmets 和帖子的反映,接口继承树不可能像对象继承树那样复杂。当您从另一个接口IX 派生时,您所说的只是“还必须实现IX”。防止这种情况没有任何好处。
【问题讨论】:
-
你会用这个做什么?你的意思是你希望一个密封的接口能够被继承,但继承类不能创建新的成员函数?还是别的什么?
-
@MrLister:我能想到的唯一可能的意思是,防止 interfaces 从接口派生。
-
因为这是我第一次看到这个问题弹出,我希望没有人需要这个功能,这会立即回答你的问题:没有人实现这个功能,因为没有人需要它: -)
-
我支持你,Weston,因为类继承和接口实现之间有明显的区别。如果一个接口是密封的,这对我来说意味着你不能子类化一个接口,但这并不意味着在一个类中实现它有什么不同。继承和实现是两种不同的动物。