Классы и модификаторы доступа в.net

У меня есть 3 вопроса относительно Oops Concepts:

  1. Что является модификаторами доступа по умолчанию для класса в пространстве имен, я попытался применить модификаторы к классу. Компилятор.net выдал ошибку, сказав, что `элементы, определенные в пространстве имен, не могут быть объявлены явно, как частные, защищенные или защищенные друзья. ниже мой код.Модификаторы доступа для класса в C

  2. В чем разница между protected internal and internal поскольку внутренние могут использоваться в сборке, а защищенные внутренние могут использоваться в том же классе, унаследованном классе или других классах в той же сборке. и в основном то, что именно здесь подразумевается под сборкой.

  3. Если есть 2 класса Class1 and Class2 Class1 имеет Method1() а также Class2 имеет Method2(), если оба находятся в цепочке наследования, то Class1 c = new Class2(); разрешить доступ Method2(); потому что здесь новый объект Class2 тогда почему.net позволяет Method1(); Я попробовал это.

3 ответа

Решение

1) Внутренний

2) Либо производный класс (возможно, в другой сборке), либо любой код в той же сборке может получить доступ

3) У вас есть ссылка на class1 который не имеет method2 - вам нужна ссылка на class2 уметь звонить method2,

Что касается вопроса 2:

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

Вот очень интересное сообщение в блоге о защищенных внутренних методах:

http://blogs.msdn.com/b/ericlippert/archive/2010/03/25/knights-knaves-protected-and-internal.aspx

1) Существует, потому что вам нужно объявить этот класс как защищенный или любой более высокий уровень доступа, например, public

3) Подклассы наследуют члены суперклассов (в данном случае метод). Обратное не может работать, хотя вы назначаете class2 для class1.

Другие вопросы по тегам