Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы C#.doc
Скачиваний:
58
Добавлен:
10.02.2015
Размер:
430.59 Кб
Скачать

Основы c#. Урок 20. Запрещение наследования или модификатор sealed

На прошлом уроке мы рассмотрели абстрактные классы. Их основное назначение - быть предками для других классов. На другом конце иерархии стоят так называемые sealed-классы. От них нельзя производить другие классы. Синтаксис для тах такой же, как и для обычных классов, за исключением ключевого слова sealed. Вот пример:

...

sealed class MyClass

{

//Методы и переменные класса

intx;

...

}

class MyClass2: MyClass //Ошибка!

{

...

}

...

Как вы видите, от sealed-класса MyClass нельзя делать классы-потомки.

Основы c#. Урок 21. Статические переменные

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

MyClass z;

k=z.data;

Здесь переменная data принидлежит классу MyClass. Для каждого экземпляра класса она своя.

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

Для объявления переменной статический надо использовать ключевое слово static. Вот пример:

classMyClass

{

//Статическая переменная

publicstaticintdata;

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

public MyClass()

{

data++;

}

}

class Test

{

public static void Main()

{

MyClass a=new MyClass();

MyClass b=new MyClass();

System.Console.WriteLine(MyClass.data);

}

}

Указанный фрагмент выведет на экран, естественно, 2 (переменая data увеличится в каждом из двух конструкторов).

Основы c#. Урок 22. Статические методы класса

На предыдущем уроке мы рассмотрели статические переменные класса. При этом наша переменная data была объявлена как public. Это не слишком хорошо - переменные класса лучше прятать от посторонних глаз. Но, так как доступ к нашей переменной нам все-таки нужен, то мы добавим в наш класс функции для чтения и записи переменной data. Вот новый вариант нашего класса:

classMyClass

{

//Статическая переменная

static int data;

//Статический метод для чтения переменной

public static int GetData()

{

returndata;

}

//Статический метод для записи переменной

public static void SetData(int newData)

{

data=newData;

}

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

public MyClass()

{

data++;

}

}

class Test

{

public static void Main()

{

MyClass a=new MyClass();

MyClass b=new MyClass();

//Вызов статического метода GetData

System.Console.WriteLine(MyClass.GetData());

//Вызов статического метода SetData

MyClass.SetData(5);

System.Console.WriteLine(MyClass.GetData());

}

}

Указанный фрагмент выведет, разумеется, 2 и 5.

Обратите внимание, что к статическим переменным и методам мы всегда получаем доступ через имя класса, а к нестатическим - через экземпляр класса. Но это не значит, что мы не имеем доступа к статическим переменным класса из нестатических методов класса - имеем, и даже у нас есть пример этому - конструктор нашего класса MyClass.