Программирование >>  Обработка исключительных ситуаций 

1 ... 36 37 38 [ 39 ] 40 41 42 ... 142


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):

Константы класса хранят неизменяемые значения, связанные с классом.

Поля содержат данные класса.

Методы реализуют вычисления или другие действия, выполняемые классом или экземпляром.

Свойства определяют характеристики класса в совокупности со способами их задания и получения, то есть методами записи и чтения.

Конструкторы реализуют действия по инициализации экземпляров или класса в целом.

Деструкторы определяют действия, которые необходимо выполнить до того, как объект будет уничтожен.

Индексаторы обеспечивают возможность доступа к элементам класса по их порядковому номеру.



1 ... 36 37 38 [ 39 ] 40 41 42 ... 142

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика