Sobes.tech
Back to questions
Junior — Middle
68

Можешь объяснить разные типы полиморфизма в объектно-ориентированном программировании?

Answer from AI

sobes.tech AI

В объектно-ориентированном программировании полиморфизм — это способность объектов разных классов реагировать на одинаковые сообщения (методы) по-разному. Основные типы полиморфизма:

  1. Компиляционный (статический) полиморфизм — определяется во время компиляции.

    • Перегрузка методов (method overloading): несколько методов с одним именем, но разными параметрами.
    • Перегрузка операторов (operator overloading) — в C# ограничена, но возможна для некоторых операторов.
  2. Выполненческий (динамический) полиморфизм — определяется во время выполнения.

    • Переопределение методов (method overriding): подкласс предоставляет свою реализацию метода базового класса.
    • Используется с ключевыми словами virtual, override в C#.

Пример динамического полиморфизма в C#:

class Animal {
    public virtual void Speak() {
        Console.WriteLine("Animal sound");
    }
}

class Dog : Animal {
    public override void Speak() {
        Console.WriteLine("Bark");
    }
}

Animal myDog = new Dog();
myDog.Speak(); // Выведет "Bark"

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