Полиморфизм в C#
НАВИГАЦИЯ ПО СТРАНИЦЕ
Полиморфизм в объектно-ориентированном программировании (ООП) означает использование одного и того же имени метода или оператора для выполнения различных операций в зависимости от контекста. Он позволяет объектам разных классов обрабатываться единообразно при выполнении некоторых операций.
В C# полиморфизм может быть реализован через переопределение методов, использование виртуальных и абстрактных методов, а также через использование интерфейсов.
Переопределение методов (
Override ):Полиморфизм может быть достигнут за счет переопределения методов базового класса в производном классе с помощью ключевого слова override.
public class Animal { public virtual void MakeSound() { Console.WriteLine("Some sound"); } } public class Dog : Animal { public override void MakeSound() { Console.WriteLine("Woof!"); } } public class Cat : Animal { public override void MakeSound() { Console.WriteLine("Meow!"); } }
Виртуальные методы (
Virtual ):Ключевое слово virtual используется для методов в базовом классе, чтобы они могли быть переопределены в производных классах.
public class Shape { public virtual void Draw() { Console.WriteLine("Drawing a shape"); } } public class Circle : Shape { public override void Draw() { Console.WriteLine("Drawing a circle"); } }
Абстрактные методы и классы (
Abstract ):Абстрактные классы и методы могут использоваться для создания структуры, где производные классы обязаны реализовать определенные методы.
public abstract class Animal { public abstract void MakeSound(); } public class Dog : Animal { public override void MakeSound() { Console.WriteLine("Woof!"); } } public class Cat : Animal { public override void MakeSound() { Console.WriteLine("Meow!"); } }
Интерфейсы :Интерфейсы предоставляют способ реализации полиморфизма в C# путем указания, какие методы должны быть реализованы в производных классах.
public interface IShape { void Draw(); } public class Circle : IShape { public void Draw() { Console.WriteLine("Drawing a circle"); } } public class Rectangle : IShape { public void Draw() { Console.WriteLine("Drawing a rectangle"); } }
Полиморфизм позволяет более гибко управлять поведением объектов разных классов через общие интерфейсы или общие методы, что улучшает гибкость и переиспользование кода в программе.