Подтвердить что ты не робот

Почему члены интерфейса не имеют модификатора доступа?

Возможный дубликат:
Почему я не могу защитить интерфейсные элементы?

как заголовок, в С#. Нет ли возможности, чтобы кто-то захотел иметь защищенный или внутренний интерфейс?

4b9b3361

Ответ 1

Потому что интерфейс в грубом выражении "взгляд на внешний мир", и поскольку он предназначен для внешнего мира, нет смысла делать его членов защищенными или частными.

Или, другими словами, это контракт с внешним миром, который указывает, что класс, реализующий этот интерфейс, выполняет определенный набор вещей. Таким образом, скрытие некоторой части этого не имеет смысла.

Однако сами интерфейсы могут иметь спецификаторы доступа, такие как protected или internal и т.д. Таким образом, ограничение "внешнего мира" подмножеством "всего внешнего мира".

Ответ 2

Члены интерфейса всегда являются общедоступными, поскольку целью интерфейса является включение других типов доступа к классу или структуре. Модификаторы доступа не могут применяться к элементам интерфейса.

Ответ 3

Все методы интерфейса являются общедоступными. Вы не можете создать модификатор доступа в интерфейсе. Если вы хотите использовать его, используйте абстрактный класс.

Ответ 4

Это связано с характером интерфейса. Интерфейс, по определению, является спецификацией. Правило в спецификациях .NET требует, чтобы класс, реализующий интерфейс, должен был реализовать всех членов этого интерфейса. Теперь, если мы помечаем элемент private, тогда реализующий класс не сможет реализовать этот конкретный элемент.

Ответ 6

Интерфейсы - это контракты кодирования, именно по этой причине он не позволит другому модификатору доступа, кроме публичного в его сигнатурах метода. Но сам интерфейс может быть внутренним, но не закрытым или защищенным. Внутренний позволяет получить доступ в сборке, который отлично подходит.