Иллюстрированный самоучитель по Visual Basic .NET

Общие данные в классах. Общие члены классов.

Обращения к константам в классах не отличаются от обращений к общим полям, но при объявлении констант вместо Shared используется ключевое слово Const. Конечно, объявление открытых констант не приводит к нарушению инкапсуляции.

Примечание
Не путайте общие данные со статическими. Общие данные существуют в одной копии для всех экземпляров класса, поэтому с точки зрения экземпляров они неявно обладают глобальной видимостью. Статическими называются переменные, состояние которых просто запоминается для повторного использования. Статическими могут быть объявлены как общие, так и обычные поля класса
.

Общие члены классов

Закрытые общие поля классов в сочетании со ReadOnly-свойствами очень удобны, но этим область применения ключевого слова Shared не исчерпывается. В классе можно объявлять общие свойства и методы. Как было показано на примере класса Math, при обращении к общим средствам класса указывается либо имя класса, либо имя конкретного экземпляра. Допустим, в класс Employee включается общая функция CalculateFICA, зависящая от двух открытых констант:

Public Const FICA_LIMIT As Integer = 76200
Public Const FICA_PERCENTAGE As Decimal = 0.062D

Функция CalculateFICA выглядит так:

Public Shared Function CalculateFICA(ByVal aSalary As Decimal) As Decimal
If aSalary > FICA_LIMIT Then
Return FICA_LIMIT * FICA_PERCENTAGE
Else
Return aSalary * FICA_PERCENTAGE
End If
End Function

Общие члены класса могут использоваться без создания экземпляров Employee, только по имени класса. Пример:

System.Console.WriteLine(Employee.
CalculateFICA(100000))

С другой стороны, метод мджно вызвать и для конкретного экземпляра Employee:

System.Console.WriteLine
(Tom.CalculateFICA
(Tom.GetSalary())

Конструкторы тоже можно объявлять общими, для этого в объявление метода New включается ключевое слово Shared. Общие конструкторы:

  • не обладают атрибутами Publiс или Private;
  • вызываются без параметров;
  • могут работать только с общими полями класса. Как правило, общие конструкторы применяются только для инициализации общих данных. Код общего конструктора выполняется при создании первого экземпляра указанного класса, перед вызовом всех остальных конструкторов.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.