Библиотека книг по компьютерным технологиям
⇒ ⇒ Разработка Windows-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# .NET. Учебный курс MCAD/MCSD
⇒ ⇒ ⇒ Глава 1. Введение в .NET Framework
⇒ ⇒ ⇒ ⇒ Занятие 5. Область видимости и уровни доступа

Читать далее: Модификаторы доступа к типам

Модификаторы доступа к членам

У членов типа также могут быть модификаторы, управляющие их областью видимости. Эти модификаторы перечислены в таблице 1-2.

Таблица 1-2. Модификаторы и задаваемые ими уровни доступа

Модификатор

Уровень доступа к членам

Public (Visual Basic .NET)
public (Visual C#)

Члены доступны из любого места приложения.

Private (Visual Basic .NET)
private (Visual C#)

Доступны только членам этого же типа (в котором определен данный член).

Friend (Visual Basic .NET)
internal (Visual C#)

Доступны из любого типа данной сборки, но не из внешних сборок.

Protected (Visual Basic .NET)
protected (Visual C#)

Доступны только членам этого же типа и типов, производных от него.

Protected Friend (Visual Basic .NET)
protected internal (Visual C#)

Доступны любым типам данной сборки, а также типам, производным от типа, которому принадлежит данный член; является гибридом Protected (protected) и Friend (internal)

Любой член, объявленный с модификатором Public (public), видим для любого кода, расположенного за пределами класса, и является открытым. Открытые поля и методы могут быть вызваны другими объектами. Напротив, методы с модификатором Private (private) видимы только внутри типа, в котором они объявлены, их нельзя вызвать извне. Третий модификатор, Friend (internal), указывает, что данный член доступен типам, объявленным внутри этой сборки. Однако для типов, расположенных вне сборки, доступ к этому типу запрещен. Модификатор Protected (protected) разрешает доступ к члену из типа, к которому данный член принадлежит, а также из любых типов, производных от него. По правилам доступа модификатор Protected Friend (protected internal) представляет собой гибрид соответствующих модификаторов.

При объявлении членов-переменных модификатор доступа может заменять оператор Dim. Если используется оператор Dim (в Visual Basic .NET) либо модификатор доступа не указан (в Visual C#), считается, что для переменных классов Visual Basic .NET и Visual C# задан модификатор private, для переменных структур Visual Basic .NET — модификатор Public, а для переменных структур Visual C# — private. Можно не указывать модификатор доступа при объявлении метода, при этом считается, что для методов классов и структур Visual C# задан модификатор private, а для методов классов и структур Visual Basic .NET — Public.

Примечание. Детально наследование обсуждается в главе 4.

Следующий пример иллюстрирует применение модификаторов доступа и их действие:

Visual Basic .NET

Public Class aClass
  ' Это поле доступно любому внешнему коду.
  Public anInteger As Integer

  ' Этот метод могут вызвать только члены данного
  ' класса или данной сборки, внешнему коду он недоступен.
  Friend Sub myMethod()
  End Sub

  ' Это поле доступно только членам данного класса.
  Private aString As String

  ' Этот метод могут вызвать только члены данного класса и
  ' классов, производных от него.
  Protected Function Return1() As Integer
    Return 1
  End Function

  ' Это поле доступно членам любых типов из данной сборки,
  ' а также типов, производных от данного класса.
  Protected Friend aLong As Long
End Class

Visual C#

public class aClass
{
  // Это поле доступно любому внешнему коду.
  public int anInteger;

  // Этот метод могут вызвать только члены данного
  // класса или данной сборки, внешнему коду он недоступен.
  internal void myMethod()
  {
  }

  // Это поле доступно лишь членам данного класса.
  private string aString;

  // Этот метод могут вызвать только члены данного класса и
  // классов, производных от него.
  protected int Return1()
  {
    return 1;
  }

  // Это поле доступно членам любых типов из данной сборки,
  // а также типов, производных от данного класса.
  protected internal long aLong;
}
Google
 
Рейтинг@Mail.ru
Сайт управляется системой uCoz