Полиморфизм это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе объекта и организации объекта.
Другими словами:
Возможность объектов с одинаковой спецификацией иметь различную реализацию. Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией могут иметь различную реализацию — например, реализация класса может быть изменена в процессе наследования.
Кратко смысл полиморфизма можно выразить фразой:
«Один интерфейс, множество реализаций».
Пример
C#
// интерфейс IGraphic
interface IGraphic
{
void ShowText(string text);
}
// класс ConsoleApp
class ConsoleApp : IGraphic
{
public void ShowText(string text)
{
Console.WriteLine("Рисуем текст " + text + " в консольном приложении");
}
}
// класс Phone
class Phone : IGraphic
{
public void ShowText(string text)
{
// рисуем текст на телефоне
}
}
class Program
{
static void Main(string[] args)
{
IGraphic graphic = null;
// создаем IGraphic реализация ConsoleApp
graphic = new ConsoleApp();
// Это полиморфизм мы вызываем метод ShowText у интерфейса IGraphic
// В реальности вызовется ShowText у класса кто реализовал интерфейс IGraphic
graphic.ShowText("Hello");
// создаем IGraphic реализация Phone
graphic = new Phone();
// Это полиморфизм мы вызываем метод ShowText у интерфейса IGraphic
// В реальности вызовется ShowText у класса кто реализовал интерфейс IGraphic
graphic.ShowText("Hello");
}
}
Вывод:
В примере вызывается 2 раза
graphic.ShowText("Hello");
graphic.ShowText("Hello");
казалось бы это одна и та же строчка но,
текст рисуется в первой строчке в консольном приложении
во второй строчке текст рисуется на телефоне
Это и есть
полиморфизм один и тот же вызов, а действия разные.