Полиморфизм в C#

НАВИГАЦИЯ ПО СТРАНИЦЕ

Override Virtual Abstract Интерфейсы

Полиморфизм в объектно-ориентированном программировании (ООП) означает использование одного и того же имени метода или оператора для выполнения различных операций в зависимости от контекста. Он позволяет объектам разных классов обрабатываться единообразно при выполнении некоторых операций.

В C# полиморфизм может быть реализован через переопределение методов, использование виртуальных и абстрактных методов, а также через использование интерфейсов.

  1. Переопределение методов (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!");
        }
    }
  2. Виртуальные методы (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");
        }
    }
  3. Абстрактные методы и классы (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!");
        }
    }
  4. Интерфейсы:

    Интерфейсы предоставляют способ реализации полиморфизма в 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");
        }
    }

Полиморфизм позволяет более гибко управлять поведением объектов разных классов через общие интерфейсы или общие методы, что улучшает гибкость и переиспользование кода в программе.