|
Программирование >> Обработка исключительных ситуаций
ft. ПРИМЕЧАНИЕ - В классе, состоящем только из статических элементов (полей и констант), описывать статический конструктор не обязательно, начальные значения полей удобнее задать при их описании. В версию 2.0 введена возможность описывать статический класс, то есть класс с модификатором static. Экземпляры такого класса создавать запрещено, и кроме того, от него запрещено наследовать. Все элементы такого класса должны явным образом объявляться с модификатором static (константы и вложенные типы классифицируются как статические элементы автоматически). Конструктор экземпляра для статического класса задавать, естественно, запрещается. В листинге 5.8 приведен пример статического класса. Листинг 5.8. Статический класс (начиная с версии 2.0) using System; namespace ConsoleAppli cati onl static class D { static int a = 200; static double b = 0.002; public static void Print О Console.WriteLine( a = + a ); Console.WriteLineC b = + b ); class Classl { static void MainO D.PrintO; Листинг 5.7 (продолжение) class Class2 { static void MainO D.PrintO; D d = new DO; ошибка: создать экземпляр невозможно public void PassportO i качестве сквозного примера, на котором будет демонстрироваться работа различными элементами класса, создадим класс, моделирующий персонаж эмпьютерной игры. Для этого требуется задать его свойства (например, коли-ество щупальцев, силу или наличие гранатомета) и поведение. Естественно, -нмер (листинг 5.9) является схематичным, поскольку приводится лишь для емонстрации синтаксиса. Мстинг 5.9. Класс Monster Г : System; respace ConsoleApplicationi ;i ass Monster public Monster() this.name = Noname ; this.health = 100; this.ammo = 100; public Monster( string name ) : thisO this.name = name; public Monster( int health, int ammo, string name ) this.name = name; this.health = health; this.ammo = ammo; public int GetName() return name; public int GetHealthO return health; public int GetAmmoO return ammo; Объекты создаются явным или неявным образом, то есть либо программистом, либо системой. Программист создаст экземпляр класса с помощью операции new. например: nPW РП.С 11 создание экземпляра класса Demo Demo b new Demo\ создание другого экземпляра класса Demo ПРИМЕЧАНИЕ Как вы помните, класс относи гея к ссылочным типам данных, память под которые выделяется в хипе (см. раздел Тины-значения и ссылочные типы на с. 3 5). Таким образом, переменные х и у хранят не сами объекты, а ссылки на объекты, то есть их адреса. Если достаточный для хранения объекта объем памяти выделить не удалось, операция new генерирует исключение OutOfMemoryExcepti on. Рекомендуется предусматривать обработку этого исключения в программах, работающих с объектами большого объема. Для каждого объекта при его создании в памяти выделяется отдельная область, в которой хранятся сто данные. Кроме того, в классе могут присутствовать статические элементы, которые существуют в единственном экземпляре для всех объектов класса. Часто статические данные называют данными класса, а остальные - данными экземпляра. Функциональные элементы класса не тиражируются, то есть всегда хранятся в единственном экземпляре. Для работы с данными класса используются методы класса (статические методы), для работы с данными экземпляра - методы экземпляра, или просто методы. До сих пор мы использовали в программах только один вид функциональных элементов класса - методы. Поля и методы являются основными элементами класса. Кроме того, в классе можно задавать целую гамму других элементов: свойства, события, индексаторы, операции, конструкторы, деструкторы, а также типы (рис. 5.1). Ниже приведено краткое описание всех элементов класса (см. также рис. 5.1): Константы класса хранят неизменяемые значения, связанные с классом. Поля содержат данные класса. Методы реализуют вычисления или другие действия, выполняемые классом или экземпляром. Свойства определяют характеристики класса в совокупности со способами их задания и получения, то есть методами записи и чтения. Конструкторы реализуют действия по инициализации экземпляров или класса в целом. Деструкторы определяют действия, которые необходимо выполнить до того, как объект будет уничтожен. Индексаторы обеспечивают возможность доступа к элементам класса по их порядковому номеру.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |