
4. Структура класса
Каждый класс содержит набор полей, методов, свойств и событий (обобщенно их называют членами класса).
Поля – это переменные, принадлежащие классу или экземпляру класса (объекту). Принадлежность к классу или экземпляру класса характерна не только для полей, но и для свойств, методов и событий.
Методы – процедуры и функции класса.
Свойства – синтаксическая надстройка, позволяющая осуществлять в форме вызов функции, аналогичной чтению или записи переменной. Например, можно объявить свойство «возраст», и при попытке записи в него отрицательного значения, выдавать ошибку. На самом деле, это не чисто синтаксическая надстройка. Свойства поддерживаются не только самим компилятором, но и средой VB.Net.
События – синтаксическая надстройка, поддерживаемая компилятором и средой VB.Net, которая позволяет вызывать методы других объектов, подписавшихся на данное событие. Например. Подписавшись на событие «нажатие объекта кнопка» подписавшийся объект каждый раз при нажатии кнопки будет получать уведомление об этом (в виде вызова соответствующего метода).
Каждое из этих составляющих класса, а также сам класс могут иметь так называемые модификаторы доступа, которые указывают область их видимости. Значения модификаторов могут быть следующими:
Public – открытый класс или член класса, доступный из любого места кода
Private – класс или член класса, доступный только из контекста, в котором он объявлен и во всех вложенных контекстах. Например, если какое-то свойство объявлено с модификатором Private, то оно доступно только из того же самого класса и из вложенных в него классов
Friend – класс или член класса, доступный только внутри той же сборки, в которой он объявлен. Сборка – полностью самостоятельная единица приложения .Net. в VB.Net сборка обычно соответствует всей программе, поэтому данный модификатор можно воспринимать как указание видимости только в пределах программы
Protected – член класса, доступный только из самого класса и из наследующих классов. Данный модификатор применим только к членам класса.
Protected Friend – объединение областей видимости Protected и Friend, член класса с таким модификатором доступен в той же сборке или в наследующих классах.
Наряду с модификаторами доступа, регламентирующими видимость, члены класса могут содержать модификаторы, устанавливающие их принадлежность к классу или экземпляру класса. Члены класса, принадлежащие к классу, называются разделяемыми (shared) или статическими (static) членами. Члены, которые принадлежат экземпляру, называются экземплярными (instance). Чтобы понять разницу между этими видами методов и полей и, как следствие, свойств и событий, необходимо более подробно рассмотреть механизм вызова методов и обращений к полям.
Объявление класса фактически задает последовательность расположения полей в памяти и способы вызова функций. При создании конкретного экземпляра объекта происходит выделение памяти согласно структуре полей класса. При вызове экземплярного метода в качестве неявного параметра ему передается информация об экземпляре класса, для которого вызван этот метод . в VB.Net эта не явная ссылка обозначается словом Me, а ссылка на класс обозначается MyClass. При вызове статического метода такой информации не передается, поэтому статическая функция может быть вызвана и при отсутствии какого-либо экземпляра класса. При обращении к полю экземпляра класса доступ производится по смещению относительно начала положения экземпляра класса в памяти.