Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора теория(полная).doc
Скачиваний:
0
Добавлен:
22.11.2019
Размер:
123.9 Кб
Скачать

Статические элементы класса. Статический конструктор.

Статич.переменные. Обычно переменные класса принадлежат конкретному экземпляру класса. Для обращения к таким переменным мы пишем (например)

MyClass z; k=z.data;

Здесь переменная data принадлежит классу MyClass. Для каждого экземпляра класса она своя. Наряду с обычными переменными существуют и статические переменые класса. Их основное отличие от обычных переменных в том, что они относятся к классу целиком. Т. е. на все экземпляры класса у нас есть только одна переменая. Получить доступ к такой переменой можно только для самого класса без создания его экземпляра. Через конкретный же экземпляр класса доступа к такой перемнной нет. Т. е. использовать такую статическую переменную можно только для самого класса без создания экземпляра. Для объявления переменной статический надо использовать ключевое слово static:

public static int data;

Обращение к этой переменной будет: MyClass.data;

Доступ к статическому полю может получить и нестатический метод (обратное невозможно – статический метод не может получить доступ к нестатическому полю).

Неявно статическими являются поля класса с модификатором const.

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

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

В статическом конструкторе можно задать начальные значения для статических переменных класса.

Для статич полей может быть предусмотрен статич констр

(единственный, без перегрузки): без аргументов, и даже без спецификатора public . Он вызывается автоматически до создания первого экземпляра типа или до первого обращения к одному из статических полей. Статич поля часто называют «полями класса» в отличие от нестатич, которые называют полями экземпляра (или экземплярными). То же относится и к методам. Если класс содержит только статические элементы, его можно объявить также статич. При этом его экземпляры с помощью оператора new, создавать нельзя!

Для того, чтобы «привязать» нестатич методы к экземпляру класса, как раз и добавл ссылка this в список аргументов метода. Статич методы не имеют скрытого параметра this , так как их не нужно «привязывать» к экземпляру.

Константные элементы класса и вложенные типы становятся статич неявно.

class MyClass

{public static int data;

//Статический конструктор

static MyClass()

{data=10;}

//Конструктор

public MyClass()

{data++;} }

class Test

{ public static void Main()

{ MyClass a=new MyClass();

MyClass b=new MyClass();

System.Console.WriteLine(MyClass.data); } }

на экране 12, т.к. сначала вызовется статический конструктор, который присвоит значение 10 перемнной data. Затем для каждого созданного экземпляра класса MyClass вызовется обычный конструктор, к котором переменная data увеличится каждый раз на 1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]