【问题标题】:Why there's no modifiers (public, private, protected) in front of methods and properties defining an interface? [duplicate]为什么定义接口的方法和属性前面没有修饰符(public、private、protected)? [复制]
【发布时间】:2011-03-07 21:37:13
【问题描述】:

可能重复:
Is there a reason you can not define the access modifier on a method or in an interface?

你好,

我对接口很好奇。假设我有以下接口的定义

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

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

感谢您的帮助

【问题讨论】:

    标签: c#


    【解决方案1】:

    引用MSDN接口成员始终是公共的,因为接口的目的是使其他类型能够访问类或结构。

    【讨论】:

      【解决方案2】:

      接口的成员总是公开的。

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

      【讨论】:

        【解决方案3】:

        接口是定义其与外部世界交互的类的公共契约。所以其中的所有内容都是隐式公开的。

        【讨论】:

          【解决方案4】:

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

          不管怎样,如果您需要一个“接口”来拥有受保护和私有成员,您可以改用abstract 基类。

          【讨论】:

            【解决方案5】:

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

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

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

            【讨论】:

              【解决方案6】:

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

              您可能想参考Why can't I have protected interface members?

              【讨论】:

                猜你喜欢
                • 2010-10-11
                • 2017-08-21
                • 2010-11-22
                • 2014-09-22
                • 1970-01-01
                • 2017-11-07
                • 2011-08-27
                • 1970-01-01
                相关资源
                最近更新 更多