Словарь постоянно развивается и растёт. В этом словаре собраны термины и сокращения по программированию, безопасности и другим темам.

Полиморфизм

Программирование

Это способность объектов с одинаковым интерфейсом (или базовым классом) вести себя по-разному в зависимости от конкретного типа объекта, с которым работает программа.С другой стороны. Это же можно сказать и с другой стороны:  это свойство, позволяющее использовать объекты разных типов через общий интерфейс, что упрощает разработку и делает код более гибким и переносимым.

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

class Animal
{
    public virtual void Speak()
    {
        Console.WriteLine("Базовый звук животного");
    }
}

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

class Cat : Animal
{
    public override void Speak()
    {
        Console.WriteLine("Мяу");
    }
}

class Program
{
    static void MakeSound(Animal animal)
    {
        animal.Speak(); 
    }

    static void Main()
    {
        Animal a1 = new Dog();
        Animal a2 = new Cat();

        MakeSound(a1);  // Гав
        MakeSound(a2);  // Мяу
    }
}

В этом примере мы создаём три класса - базовый Animal и два потомка - Dog (Собака) и Cat (Кошка). Собака и кошка делают разные звуки, но чуть ниже в методе MakeSound нам всё равно, какого животного нам передали в качестве параметра. Мы просто вызываем метод Speak и звук будет разный, в зависимости от того, какой именно объект мы получили - кошка или собака

Ключевые моменты:

- Основан на наследовании и переопределении методов.

- Может решаться во время выполнения (динамический полиморфизм).

Вернуться к словарю ИТшника

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне