
- •Программирование на языке Visual c#
- •14. Объектно-ориентированное программирование
- •14.1. Основные принципы ооп
- •14.2. Объекты
- •14.3. Классы
- •14.4. Определение классов и их членов
- •14.4.1. Определение полей
- •14.4.2. Определение свойств
- •14.4.3. Определение методов
- •14.4.4. Конструкторы
- •14.5. Статические классы и их члены
- •9.5. Члены классов
14.4. Определение классов и их членов
Полный синтаксис определения класса в C# имеет следующий вид [2 – Фаронов]:
[атрибуты] [модификаторы] class <имя_класса> [: <список_родителей>]
{<тело_класса>}
Здесь атрибуты – атрибуты класса; модификаторы – модификаторы класса; class – зарезервированное слово; <имя_класса> – правильный идентификатор; <список_родителей> – список родительских классов; <тело_класса> – произвольный блок операторов (возможно, пустой).
Атрибуты класса предназначены для вставки в текст программы дополнительной информации, которая становится частью метаданных. Доступ к этой информации получает не только компилятор, но и работающая программа.
Модификаторы доступа (таблица 14.1) могут сопровождать определение, как класса, так и всех составляющих его членов, они указывают область их видимости от полностью видимых (глобальных, public) до закрытых (локальных, private). По умолчанию класс считается доступным в текущей сборке (internal), а член класса – закрытым (локальным, private). Эти модификаторы подробно были рассматрены ранее (п.2.1.2. Модификаторы доступа).
Таблица 14.1. Модификаторы класса и его членов
Модификатор |
Пояснение |
public |
Класс или его член доступен из любой точки программы |
internal |
Класс (член) доступен в сборке, в которой он определен |
protected |
Класс (член) доступен потомкам и только им |
private |
Члены класса доступны только методам этого же класса |
abstract |
Абстрактный класс; должен обязательно перекрываться в потомках |
sealed |
Класс не может иметь наследников |
static |
Определяет статический член класса |
Кроме того, с помощью модификаторов можно определить возможность наследования класса, а также готовность класса в целом и отдельных его членов к работе.
Модификатор abstract сигнализирует компилятору, что класс не предназначен для непосредственного использования – попытка создать экземпляр абстрактного класса блокируется на этапе компиляции. Абстрактными обычно объявляются классы, являющиеся родоначальниками родственных классов, имеющих схожую функциональность. В этом случае абстрактный родитель инкапсулирует в себе общие для всех потомков поля, методы и события.
Модификатор sealed, наоборот, предупреждает компилятор о невозможности создания потомка класса. С помощью модификатора sealed объявляются «полностью готовые» классы {sealed – опечатанный, закрытый на ключ). Таким модификатором снабжаются все примитивные классы – это исключает возможность перегрузки для них операций.
Эти два модификатора широко используются в CTS.
Модификатор static объявляет член класса статическим. Для доступа к статическому члену можно не создавать объект класса – статические члены принадлежат не отдельному объекту, а классу как таковому.
Определить класс можно следующим образом (MSDN_ООП_VB+C#_2010):
class SampleClass
{ ...
}
Процесс создания объекта на основе класса называется созданием экземпляра этого класса. Если использовать сравнение с чертежом, то класс является чертежом, а объект является зданием, построенным по нему. Например:
SampleClass sampleObject = new SampleClass();
Каждый класс может состоять из различных членов класса, которыми могут быть поля и свойства (описывающие данные класса), методы (задающие поведение класса) и события (обеспечивающие связь между различными классами и объектами).