* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Защищенные члены
8 февраля 2009

С уровнями доступа к членам классов вы познакомились в главе 1: члены, объяв-
ленные с уровнем доступа Public (public), доступны из любой части приложения, в
том числе из внешних классов; члены с уровнем доступа Friend или internal доступ-
ны только членам из локальной сборки, но не из внешних сборок; члены с уровнем
доступа Private (private) доступны только в пределах класса и не доступны никаким
другим классам, в том числе и производным от класса, в котором объявлен этот
член. Остальные два уровня доступа, Protected (protected) и Protected Friend (protected
internal), подробно не обсуждались в главе 1.
Области видимости членов классов, объявленных с ключевыми словами Protected
(protected) и Private (private), совпадают за исключением того, что в первом случае
члены доступны и производным классам. Рассмотрим следующий пример;
Visual Basic .NET
' В базовом классе определены два метода:
с уровнями доступа private и protected.
Public Class BaseClass
Метод с уровнем доступа private нельзя вызывать
' из производных классов..,
Private Sub HethodK)
Реализация опущена
End Sub
...а метод с уровнем доступа protected
из производных классов вызывать можно.
Protected Sub Method2()
Реализация опущена
End Sub
End Class
' Класс, производный от BaseClass
Public Class InheritedClass
Inherits BaseClass
Public Sub OernoO
1 Такой вызов допустим, поскольку уровень доступа protected
' не запрещает доступ к члену, объявленному в BaseClass,
Me.Method2()
' а этот вызов приведет к ошибке компиляции, поскольку он
' обращается к члену базового класса, объявленному
' с уровнем доступа private.
Me.Method1()
End Sub
End Class
Visual C#
// В базовом классе определены два метода:
// с уровнями доступа private и protected,
public class BaseClass
// Метод с уровнем доступа private нельзя вызывать
// из производных классов...
private void Method"! ()
// Реализация опущена
// Класс, производный от BaseClass
public class InheritedClass : BaseClass
{
public void Demo()
{
// Такой вызов допустим, поскольку уоовень доступа protected
// не запрещает доступ к члену, обьявленному в BaseClass,
this.Method2();
// а этот вызов приведет к ошибке компиляции, поскольку он
// обращается к члену базового класса, объявленному
// с уровнем доступа private.
this. Hethod1();
Здесь иллюстрируется различие закрытых и защищенных членов. Метод Demo
попытается вызвать методы Method! и Melhod2 при помощи ссылки на экземпляр
класса InheritedClass (через ключевое слово Me [this]). Поскольку оба этих метода
определены в базовом классе, возможность их вызова определяется уровнями досту-
па, с которыми они объявлены. Вызов метода Method2 завершается успешно, так
как он объявлен с модификатором Protected (protected), а метод Method!, объявлен-
ный с модификатором Private (private), производным классам не доступен.
Уровень доступа Protected Friend (protected internal) представляет собой «гибрид*-
модификаторов Protected (protected) и Friend (internal). Поэтому член класса, объяв-
ленный с модификатором Protected Friend (protected internal), доступен членам этого
класса и других классов, расположенных в той же сборке с этим классом, а также
членам своих производных классов.

Теги: .NET

Статьи по теме:

Вложенные элементы управления и контейнеры
Константы и перечисления
Абстрактные классы и члены
Создание проекта установочной программы
Применение класса XmlDataDocument
Развертывание приложений с помощью XCOPY
Создание класса Demo
Обзор ADO.NET
Применение наследования с формами
Замещение членов базового класса в Visual Basic .NET
Реализация полиморфизма через интерфейсы
Применение XML с объектами DataSet
.NET Framework и языки программирования
Системные кисти, перья и цвета
ToDoList 5.6.6
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Защищенные члены. Регион сайта: Москва и Санкт-Петербург