Полиморфизм – один из ключевых принципов объектно-ориентированного программирования (ООП), который позволяет использовать один интерфейс для работы с разными типами данных. В C# полиморфизм реализуется через перегрузку методов, переопределение виртуальных методов и использование интерфейсов.
Виды полиморфизма
Компиляционный (статический) полиморфизм
Этот вид полиморфизма достигается с помощью перегрузки методов (method overloading
) и операторов (operator overloading
).
Пример перегрузки методов:
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
}
Пример перегрузки операторов:
public class Vector
{
public int X { get; set; }
public int Y { get; set; }
public static Vector operator +(Vector a, Vector b)
{
return new Vector { X = a.X + b.X, Y = a.Y + b.Y };
}
}
Исполняемый (динамический) полиморфизм
Этот вид полиморфизма достигается через переопределение (override
) виртуальных методов и использование интерфейсов.
Пример использования виртуальных методов:
public class Animal
{
public virtual void Speak()
{
Console.WriteLine("Animal makes a sound");
}
}
public class Dog : Animal
{
public override void Speak()
{
Console.WriteLine("Dog is barking");
}
}
Пример использования интерфейсов:
public interface IShape
{
void Draw();
}
public class Circle : IShape
{
public void Draw()
{
Console.WriteLine("Drawing a circle");
}
}
public class Square : IShape
{
public void Draw()
{
Console.WriteLine("Drawing a square");
}
}
Применение полиморфизма
Полиморфизм позволяет:
- Создавать гибкие и расширяемые программы.
- Уменьшать дублирование кода.
- Повышать удобство сопровождения и модификации кода.
Полиморфизм – важный механизм в C#, позволяющий строить гибкие архитектуры программ. Использование перегрузки, виртуальных методов и интерфейсов помогает эффективно управлять сложностью кода и повышать его переиспользуемость.