为什么在定义接口的方法和属性前面没有修饰符(public,private,protected)?
可能重复:
您是否有理由无法在方法或界面中定义访问修饰符?
你好,
我对接口感到好奇。 假设我有以下界面的定义
public interface IPersone { string FirstName { get; set; } string LastName { get; set; } int CalculateAge(int YearOfBirth); }
为什么在定义接口的方法和属性前面没有修饰符(public,private,protected)? 有什么理由吗?
谢谢你的帮助
从MSDN引用: 接口成员总是公开的,因为接口的目的是使其他类型能够访问类或结构。
界面的成员始终是公共的。
接口是一个契约,它定义了您始终能够在实现接口的任何对象上调用的方法和属性。 受保护或私人成员将违反此合同。
接口是定义其与外部世界的交互的类的公共合同。 所以其中的一切都是含蓄公开的。
由于类不能从接口inheritance,只能实现它,如果将方法标记为private
或protected
则实现接口的类无法访问这些方法。
对于它的价值,如果你需要一个“接口”来拥有受保护和私有成员,你可以使用抽象基类。
http://en.wikipedia.org/wiki/Interface
在第一段中,它说:“界面是两个系统或工作组之间的交互点。”
默认情况下,接口中定义的任何内容都应该是公共的,否则会破坏接口的整个概念。
接口定义对象的公共合同。 受保护/私有方法等是实现细节,而不是对象的公共合同的一部分。
您可能想参考为什么我不能拥有受保护的接口成员? 。