⇒ Библиотека книг по компьютерным технологиям
⇒ ⇒ Разработка Windows-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# .NET. Учебный курс MCAD/MCSD
⇒ ⇒ ⇒ Глава 1. Введение в .NET Framework
⇒ ⇒ ⇒ ⇒ Занятие 5. Область видимости и уровни доступа
Читать далее: Модификаторы доступа к типам
У членов типа также могут быть модификаторы, управляющие их областью видимости. Эти модификаторы перечислены в таблице 1-2.
Таблица 1-2. Модификаторы и задаваемые ими уровни доступа
Модификатор |
Уровень доступа к членам |
|
Члены доступны из любого места приложения. |
|
Доступны только членам этого же типа (в котором определен данный член). |
|
Доступны из любого типа данной сборки, но не из внешних сборок. |
|
Доступны только членам этого же типа и типов, производных от него. |
|
Доступны любым типам данной сборки, а также типам, производным от типа, которому принадлежит данный член; является гибридом |
Любой член, объявленный с модификатором 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;
}