另一个翻译问题,这可能更具理论性,但我对设计选择感到好奇。SFNQ:
为什么 C# 不允许像 Java 那样控制对接口中方法的访问控制?例如,在 C# 接口中:
public void Visit(Axiom axiom);
谢谢你。
另一个翻译问题,这可能更具理论性,但我对设计选择感到好奇。SFNQ:
为什么 C# 不允许像 Java 那样控制对接口中方法的访问控制?例如,在 C# 接口中:
public void Visit(Axiom axiom);
谢谢你。
在 C# 和一般的 .Net 中,接口上的所有方法默认情况下都是公共的。没有办法限制他们的访问。
考虑另一种选择,在接口上有一个受保护的成员意味着什么?您将如何建立访问规则以允许或禁止接口调用者访问特定方法?(我的意思是 C# 意义上的受保护,而不是 Java)。
更好的是,私人意味着什么?
在 C# 和 Java 中,接口上的所有方法都是公共的。
在 Java 中,允许使用 public 关键字,可能会节省解析规则。在 C# 中,public 关键字被认为是多余的,并从接口声明中完全删除。
在 C# 中,接口的所有成员都必须是公共的,因此它不允许您在成员声明中添加任何可见性修饰符。因此 public 关键字是多余的并且不需要(事实上,如果你包含它,你会得到一个编译器错误)。
接口是一个契约,它声明您将提供接口定义中指定的所有功能。如果您被允许在接口中拥有私有成员,您将不会公开该功能(因此您将违反合同)。