Что такое полиморфизм в ООП · C# Backend — JobPilot

Что такое полиморфизм в ООП

C# Backend · 33%
Вопрос 3373 / #
Пример ответа

Коротко: Полиморфизм в ООП — это возможность объектов разных классов обрабатываться через общий интерфейс или базовый класс, что позволяет мне писать более гибкий и переиспользуемый код, особенно в C#.

Ключевые идеи:
  • Полиморфизм позволяет вызывать методы производных классов через ссылку на базовый класс, обеспечивая единый интерфейс для разных реализаций.
  • В C# полиморфизм реализуется через наследование и виртуальные методы с ключевым словом 'override', а также через интерфейсы.
  • Это упрощает расширение кода, так как новые классы можно добавлять без изменения существующего кода, работающего с базовым типом.
Пример: Например, в моём проекте у меня был базовый класс 'PaymentProcessor' с виртуальным методом 'ProcessPayment'. Классы 'CreditCardProcessor' и 'PayPalProcessor' переопределяли этот метод, и я мог вызывать 'ProcessPayment' через ссылку на 'PaymentProcessor', не зная конкретной реализации.
Пример полиморфизма в C# с использованием наследования и виртуальных методов
csharp
using System;

public abstract class Shape
{
    public abstract double Area();
}

public class Circle : Shape
{
    public double Radius { get; set; }

    public Circle(double radius)
    {
        Radius = radius;
    }

    public override double Area()
    {
        return Math.PI * Radius * Radius;
    }
}

public class Rectangle : Shape
{
    public double Width { get; set; }
    public double Height { get; set; }

    public Rectangle(double width, double height)
    {
        Width = width;
        Height = height;
    }

    public override double Area()
    {
        return Width * Height;
    }
}

class Program
{
    static void Main()
    {
        Shape[] shapes = new Shape[]
        {
            new Circle(5.0),
            new Rectangle(4.0, 6.0)
        };

        foreach (var shape in shapes)
        {
            Console.WriteLine($"Area: {shape.Area()}");
        }
    }
}
Вопросы для интервьюера:
  • Как полиморфизм связан с принципами SOLID?Полиморфизм напрямую поддерживает принцип открытости/закрытости (OCP), позволяя расширять поведение через новые классы без изменения существующего кода.
  • Какие есть типы полиморфизма в C#?В C# я использую полиморфизм через наследование (виртуальные методы) и интерфейсы, а также параметрический полиморфизм с обобщёнными типами (generics).
Практический совет (на неделю):
  1. При проектировании классов в C# используйте интерфейсы или абстрактные классы для определения общего поведения, чтобы легко добавлять новые реализации.
  2. Тестируйте полиморфный код, убедившись, что все производные классы корректно переопределяют методы и не нарушают контракт базового типа.

Мы используем cookie для улучшения сайта. Продолжая пользоваться сайтом, вы соглашаетесь с политикой cookie и политикой конфиденциальности.