Общие данные в классах. Общие члены классов.
Обращения к константам в классах не отличаются от обращений к общим полям, но при объявлении констант вместо 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;
- вызываются без параметров;
- могут работать только с общими полями класса. Как правило, общие конструкторы применяются только для инициализации общих данных. Код общего конструктора выполняется при создании первого экземпляра указанного класса, перед вызовом всех остальных конструкторов.