В языке Си шарп вы можете использовать одно и то же имя двумя или более методами одного и того же класса. Необходимое условие — их параметры объявляются по-разному. Тогда говорят, что методы перегружаются, а сам процесс называется перегрузкой методов. Перегрузка методов относится к одному из способов реализации полиморфизма в 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: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.