ответ
Нет, они не могут. Все функции, определенные в интерфейсе, должны быть общедоступными (или какова точка их определения в интерфейсе?).
От MSDN:
члены интерфейса всегда общедоступны, потому что цель интерфейса является предоставление других видов, чтобы получить доступ к классу или структуры. Модификаторы доступа не могут применяться к членам интерфейса.
Нет, модификаторы доступа определены для реализации методов. Интерфейс определяет публичный (или расходный) контракт, необходимый для реализации, поэтому эти реализованные методы должны быть общедоступными (если только они не объявлены явно).
Методы интерфейса, по определению, всегда общедоступны. Чтобы ответить «почему», считают, что интерфейс - это своего рода контракт между двумя или более системами, которые используют один и тот же интерфейс (либо внутри одного приложения, либо между приложениями, системами или сетями).
Чтобы иметь возможность делиться, значит, методы должны быть общедоступными, иначе другой класс не сможет получить к ним доступ.
Однако, обратите внимание, что интерфейс в целом может быть private
, protected
, internal
, protected internal
или public
. Если частное означает, что оно доступно только в его текущей области (например, внутри содержащего класса). Действует следующее:
class SomeClass
{
// inside a class, an interface can have access modifiers
private interface IPrivateTest
{
void TestMe(); // always public, cannot even use "public" keyword
}
}
Бывают ситуации, когда сборку Foo было бы полезно объявить интерфейс с «внутренними» членами, так что сборка Foo может создавать экземпляры класса, реализующие интерфейс, передавать их во внешний код и получать их обратно из внешний код, без внешнего кода, который может заменить любой тип, не предоставленный Foo. Было бы возможно, чтобы Foo определил интерфейс, который наследуется от открытого интерфейса, использует внешний мир для публичного интерфейса и передает данные, полученные от внешнего мира, в частный интерфейс, но это обеспечит ... – supercat
... только время выполнения, а не время проверки типов интерфейсов во время компиляции. Механизмы могут не существовать в .net, чтобы позволить устанавливать такие ограничения на интерфейсы, но это не значит, что они не будут полезны. – supercat
- 1. Могут ли модификаторы доступа влиять на отражение?
- 2. Может ли Windows Containers размещаться на Linux?
- 3. Может ли сайт размещаться на двух серверах?
- 4. модификаторы доступа в Java
- 5. Модификаторы доступа
- 6. Модификаторы доступа в C#
- 7. Модификаторы доступа в javascript
- 8. Модификаторы доступа по методам, использующим Tuple in C#
- 9. Модификаторы метода в Java
- 10. Модификаторы доступа с интерфейсами
- 11. Модификаторы доступа ... Почему?
- 12. C# - модификаторы доступа класса
- 13. Зачем использовать модификаторы доступа
- 14. Модификаторы Java-доступа
- 15. Могут ли объекты, имеющие модификаторы доступа?
- 16. Модификаторы доступа на элементах интерфейса в C#
- 17. Какое влияние оказывают модификаторы в объявлениях с помощью оператора qr?
- 18. защищенные модификаторы доступа в .net
- 19. Модификаторы доступа EventInfo
- 20. Класс-члены модификаторы доступа
- 21. {get; set;} и модификаторы доступа
- 22. Наследует модификаторы доступа?
- 23. Практические модификаторы доступа
- 24. Переопределение и weaking доступа модификаторы
- 25. Могут ли модификаторы доступа влиять на методы расширения?
- 26. C Модификаторы # Доступа с наследованием
- 27. Модификаторы доступа и наследование C#
- 28. модификаторы доступа C# - внутренний модификатор
- 29. Модификаторы доступа и несколько сборок
- 30. Восстановление модификаторы доступа после макро
Выполнение викторины или онлайн-теста? – Abel