Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_OOP.docx
Скачиваний:
5
Добавлен:
21.09.2019
Размер:
59.42 Кб
Скачать
  1. Перегружаемые методы класса.

В С# два или больше методов внутри одного класса могут

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

ситуацию называют перегрузкой методов (method overloading), а методы, которые в ней

задействованы, — перегруженными (overloaded). Перегрузка методов — один из спосо-

бов реализации полиморфизма в С#.

В общем случае для создания перегрузки некоторого метода достаточно объявить

еще одну его версию. Об остальном позаботится компилятор. Но здесь необходимо

отметить одно важное условие: все перегруженные методы должны иметь списки па-

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

достаточно отличаться лишь типами возвращаемых значений. Они должны отличать-

ся типами или числом параметров. При вызове перегруженного метода выпол-

няется та его версия, параметры которой совпадают (по типу и количеству) с задан-

ными аргументами. Как видите, метод ovlDemo () перегружается четыре раза. Первая версия вообще

не принимает параметров, вторая принимает один целочисленный параметр, третья —

два целочисленных параметра, а четвертая — два double-параметра. Обратите внима-

ние на то, что первые две версии метода ovlDemo () возвращают тип void, т.е. не

возвращают никакого значения, а вторые две возвращают значения соответствующих

типов. Принципиальная значимость перегрузки состоит в том, что она позволяет обра-

щаться к связанным методам посредством одного, общего для всех имени. Следова-

тельно, имя ovlDemo () представляет общее действие, которое выполняется во всех случаях.

Компилятору остается правильно выбрать конкретную версию при конкретных об-

стоятельствах.

  1. Статические члены класса: назначение и применение.

Довольно часто при разработке приложений появляется необходимость иметь общие данные для всех объектов одного класса. В этом случае применяют статические данные-члены. Для объявления статических членов класса используется спецификатор static.

Иногда требуется определить член класса, который должен использоваться незави-

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

объект этого класса. Однако можно создать член, который заведомо разрешено ис-

пользовать сам по себе, т.е. без ссылки на конкретный экземпляр. Чтобы создать та-

кой член, предварите его объявление ключевым словом s t a t i c . Если член объявлен

как s t a t i c , к нему можно получить доступ до создания объектов этого класса и без

ссылки на объект. С использованием ключевого слова s t a t i c можно объявлять как

методы, так и переменные. При использовании static-члена вне класса необходимо указать имя класса и следующий за ним оператор "точка". Объект при этом не нужно создавать. К s t a t i c -

члену получают доступ не через экземпляр класса, а с помощью имени класса. На-

пример, чтобы присвоить число 10 static-переменной с именем count, которая яв-

ляется членом класса Timer, используйте следующую строку кода:

I Timer.count = 10; На static-методы накладывается ряд ограничений.

1. static-метод не имеет ссылки this.

2. static-метод может напрямую вызывать только другие static-методы. Он не

может напрямую вызывать метод экземпляра своего класса. Дело в том, что

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

скажешь о static-методах.

3. static-метод должен получать прямой доступ только к static-данным. Он не

может напрямую использовать переменные экземпляров, поскольку не работа-

ет с экземплярами класса.

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