Что такое Ad-hoc полиморфизм?

При изучении полиморфизма пишется, что у него есть несколько вариантов его использования:

  • используя virtual/override
  • ad-hoc полиморфизм.
    С virtual/override всё предельно ясно, но я так и не могу понять что за ad-hoc полиморфизм.

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

схожие методы - методы с одинаковой сигнатурой и возвращаемым значением.

Пример Ad hoc полиморфизма:

public class Class1 { public void Method() { Console.WriteLine("Class 1"); } }
public class Class2 { public void Method() { Console.WriteLine("Class 2"); } }
public class Class3 { public void Method() { Console.WriteLine("Class 3"); } }

после чего, например, где-то в коде:

IInterface[] array = { new MyClass1(), new MyClass2(), new MyClass3() };

если всё же осталась запутанность и после данного примера, то советую посмотреть это видео