Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Перегрузка методов. Функциональное назначение. Способ реализации. Примеры применения.

Читайте также:
  1. CTR иногда называется «откликом» или коэф­фициентом проходимости. Обычно выражается в процентах и является од­ним из самых популярных способов измерения эффективности рекламы.
  2. I Раздел. Определение провозной способности судна.
  3. II-3).Укажите тот способ ориентирования, который позволяет лишь приблизительно определить расположение сторон горизонта.
  4. II-3).Укажите тот способ ориентирования, который позволяет лишь приблизительно определить расположение сторон горизонта.
  5. II. ВЫБОР СПОСОБА УПРАВЛЕНИЯ И СОДЕРЖАНИЯ ОБЩЕГО ИМУЩЕСТВА СОБСТВЕННИКОВ ПОМЕЩЕНИЙ МКД
  6. II. Речевая деятельность человека. Создание текста. Коммуникативные качества хорошей речи и способы их достижения
  7. II. СПОСОБЫ И СРЕДСТВА ДОКАЗЫВАНИЯ В
  8. III. Первоначальное накопление капитала (особенности, примеры)
  9. quot;Мода" от французского слова "mode", которое происходит от лат. "modus" - мера, образ, способ.
  10. Sperm vitality tests (тесты для определения жизнеспособности сперматозоидов)

В С# два или больше методов внутри одного класса могут иметь одинаковое имя, но при условии, что их параметры будут различными. Такую ситуацию называют перегрузкой методов.

Перегрузка методов — один из способов реализации полиморфизма в С#. В общем случае для создания перегрузки некоторого метода достаточно объявить еще одну его версию. Об остальном позаботится компилятор. Но здесь необходимо отметить одно важное условие: все перегруженные методы должны иметь списки параметров, которые отличаются по типу и/или количеству. Методам для перегрузки недостаточно отличаться лишь типами возвращаемых значений.(Другими словами, тип возвращаемого значения не обеспечивает достаточную информацию для С#, чтобы можно решить, какой именно метод должен быть вызван). Конечно, перегруженные методы могут отличаться и типами возвращаемых значений. При вызове перегруженного метода выполняется та его версия, параметры которой совпадают (по типу и количеству) с заданными аргументами.

Вот простой пример, иллюстрирующий перегрузку методов:

public void ovlDemo() {}

// Перегружаем метод ovlDemo() для одного целочисленного параметра

public void ovlDemo(int a) { Console.WriteLine("Один параметр: " + a); }

Посредством перегрузки методов в С# поддерживается полиморфизм. В языке, который не поддерживает перегрузку методов, каждый метод должен иметь уникальное имя. Однако часто нужно реализовать один и тот же метод для различных типов данных. Возьмем, например, функцию, возвращающую абсолютное значение. В языках, которые не поддерживают перегрузку методов, обычно существует три или даже больше версий этой функции, причем их имена незначительно отличаются. Например, в языке С функция abs () возвращает абсолютное значение (модуль) целого числа, функция labs () возвращает модуль длинного целочисленного значения, а fabs () — модуль значения с плавающей точкой. Поскольку язык С не поддерживает перегрузку методов, каждая функция должна иметь собственное имя, несмотря на то, что все три функции выполняют по сути одно и то же действие. Это делает ситуацию сложнее, чем она есть на самом деле. Другими словами, при одних и тех же действиях программисту необходимо помнить имена всех трех (в данном случае) функций. Язык С# избавлен от ненужного "размножения" имен, поскольку все методы получения абсолютного значения могут использовать одно и то же имя. И в самом деле, библиотека стандартных классов С# включает метод получения абсолютного значения с именем Abs(). Этот метод перегружается С#-классом System.Math, что позволяет обрабатывать значения всех числовых типов, используя одно имя метода. Определение того, какая именно версия метода должна быть вызвана, основано на типе передаваемого аргумента.

Принципиальная значимость перегрузки состоит в том, что она позволяет обращаться к связанным методам посредством одного, общего для всех имени. Следовательно, имя Abs () представляет общее действие, которое выполняется во всех случаях. Компилятору остается правильно выбрать конкретную версию при конкретных обстоятельствах. А программисту нужно помнить лишь общую операцию, которая связана с именем того или иного метода. Благодаря полиморфизму применение нескольких имен сводится к одному. Несмотря на простоту приведенного примера, он все же позволяет понять, что перегрузка способна упростить процесс программирования.

 

 




Дата добавления: 2014-12-18; просмотров: 47 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав