классы и модификаторы доступа в .net - PullRequest
0 голосов
/ 08 марта 2012

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

  1. Что такое модификаторы доступа по умолчанию для класса в пространстве имен, я попытался применить модификаторы к классу. Компилятор .net выдал ошибку, сказав, что `элементы, определенные в пространстве имен, не могут быть явно объявлены как частные, защищенные или защищенные друзья. ниже мой код. Access Modifiers for the class in c#

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

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

Ответы [ 3 ]

2 голосов
/ 08 марта 2012

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

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

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

1 голос
/ 08 марта 2012

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

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

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

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

0 голосов
/ 08 марта 2012

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

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

...