Java2C#translation:C#中接口的公共方法

时间:2009-06-24 14:31:08

标签: c# java translation public-method

另一个翻译问题,这可能更具理论性,但我对设计选择感到好奇。 SFNQ:

为什么C#不允许控制访问Java等接口中的方法?例如,在C#界面中:

   public void Visit(Axiom axiom);

谢谢。

3 个答案:

答案 0 :(得分:6)

在C#和.Net中,默认情况下,接口上的所有方法都是公共的。没有办法限制他们的访问权。

考虑替代方案,在接口上拥有受保护的成员意味着什么?您如何建立访问规则以允许或禁止接口的调用者访问特定方法? (我的意思是在C#意义上保护,而不是java)。

更好的是,私人意味着什么?

答案 1 :(得分:5)

在C#和Java中,接口上的所有方法都是公共的。

在Java中,允许使用public关键字,可能会节省解析规则。在C#中,public关键字被认为是冗余的,并且完全从接口声明中删除。

答案 2 :(得分:4)

在C#中,接口的所有成员都必须是公共的,因此它不允许您向成员声明添加任何可见性修饰符。因此,public关键字是多余的,不需要(事实上,如果包含它,则会出现编译器错误)。

接口是一个合同,声明您将提供接口定义中指定的所有功能。如果您被允许在界面中拥有私人成员,您将不会暴露该功能(因此您将违反合同)。