为什么在定义接口的方法和属性前面没有修饰符(public,private,protected)?

可能重复:
您是否有理由无法在方法或界面中定义访问修饰符?

你好,

我对接口感到好奇。 假设我有以下界面的定义

public interface IPersone { string FirstName { get; set; } string LastName { get; set; } int CalculateAge(int YearOfBirth); } 

为什么在定义接口的方法和属性前面没有修饰符(public,private,protected)? 有什么理由吗?

谢谢你的帮助

从MSDN引用: 接口成员总是公开的,因为接口的目的是使其他类型能够访问类或结构。

界面的成员始终是公共的。

接口是一个契约,它定义了您始终能够在实现接口的任何对象上调用的方法和属性。 受保护或私人成员将违反此合同。

接口是定义其与外部世界的交互的类的公共合同。 所以其中的一切都是含蓄公开的。

由于类不能从接口inheritance,只能实现它,如果将方法标记为privateprotected则实现接口的类无法访问这些方法。

对于它的价值,如果你需要一个“接口”来拥有受保护和私有成员,你可以使用抽象基类。

http://en.wikipedia.org/wiki/Interface

在第一段中,它说:“界面是两个系统或工作组之间的交互点。”

默认情况下,接口中定义的任何内容都应该是公共的,否则会破坏接口的整个概念。

接口定义对象的公共合同。 受保护/私有方法等是实现细节,而不是对象的公共合同的一部分。

您可能想参考为什么我不能拥有受保护的接口成员? 。