Перегрузка методов

В языке Си шарп вы можете использовать одно и то же имя двумя или более методами одного и того же класса. Необходимое условие — их параметры объявляются по-разному. Тогда говорят, что методы перегружаются, а сам процесс называется перегрузкой методов. Перегрузка методов относится к одному из способов реализации полиморфизма в C#. Рассмотрим эту тему подробнее.

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

тип или число параметров у каждого метода должны быть разными.

Недостаточно, чтобы два метода отличались только типами возвращаемых значений. Они должны также отличаться типами или числом своих параметров. Разумеется, перегружаемые методы могут отличаться и типами возвращаемых значений. Когда вызывается перегружаемый метод, то выполняется тот его вариант, параметры которого соответствуют (по типу и числу) передаваемым аргументам.

Рассмотрим пример использования перегрузки методов:

using System;
namespace ПерегрузкаМетодов
{
   class Decart
   {
      int x { get; set; }
      int y { get; set; }
      int z { get; set; }
   // конструктор
      public Decart(int x, int y, int z)
      {
         this.x = x;
         this.y = y;
         this.z = z;
      }
   // квадрат расстояния для 3d-точки
      public int distance(int a, int b, int c)
      {
         return a*a + b*b + c*c;
      }
   // квадрат расстояния для 2d-точки
      public int distance(int a, int b)
      {
         return a * a + b * b;
      }
   // квадрат расстояния для 1d-точки
      public int distance(int a)
      {
         return a * a;
      }
   // квадрат расстояния для 3d-объекта
      public int distance()
      {
         return x*x + y*y + z*z;
      }
   }
   class Program
   {
      static void Main(string[] args)
      {
         Decart d = new Decart(4,4,4);
         Console.WriteLine(d.distance());
         Console.WriteLine(d.distance(3));
         Console.WriteLine(d.distance(3,4));
         Console.WriteLine(d.distance(3,4,5));
         Console.ReadKey();
      }
   }
}

Результат:Наглядная демонстрация полиморфизма — одно имя, четыре метода.

Другой пример полиморфизма — абстрактные классы, методы и свойства.


NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.


Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x